diff --git a/languagetool-language-modules/de/src/main/java/org/languagetool/rules/de/GermanSpellerRule.java b/languagetool-language-modules/de/src/main/java/org/languagetool/rules/de/GermanSpellerRule.java index 13a74044a69d..1ba58c3c270d 100644 --- a/languagetool-language-modules/de/src/main/java/org/languagetool/rules/de/GermanSpellerRule.java +++ b/languagetool-language-modules/de/src/main/java/org/languagetool/rules/de/GermanSpellerRule.java @@ -2215,6 +2215,18 @@ protected boolean ignorePotentiallyMisspelledWord(String word) throws IOExceptio List parts = compoundTokenizer.tokenize(wordNoDot); boolean nonStrictMode = false; if (parts.size() == 1) { + String part2 = " "; + for (String w : wordsWithoutInfixS) { // wordsWithHyphen + if (word.startsWith(w)) { + part2 = word.substring(w.length()); + if (part2.startsWith("-")) { + part2 = part2.substring(1); + } else if (word.length() > w.length() && w.length() > 3) { + part2 = uppercaseFirstChar(part2.substring(0)); + } + return (!isMisspelled(part2) || ignorePotentiallyMisspelledWord(part2)) && isNoun(part2); + } + } parts = nonStrictCompoundTokenizer.tokenize(wordNoDot); nonStrictMode = true; } diff --git a/languagetool-language-modules/de/src/main/resources/org/languagetool/resource/de/hunspell/spelling.txt b/languagetool-language-modules/de/src/main/resources/org/languagetool/resource/de/hunspell/spelling.txt index cdea7ef727d3..898848d4061d 100644 --- a/languagetool-language-modules/de/src/main/resources/org/languagetool/resource/de/hunspell/spelling.txt +++ b/languagetool-language-modules/de/src/main/resources/org/languagetool/resource/de/hunspell/spelling.txt @@ -61678,4 +61678,7 @@ Petruskreuze/SN Pileolus Pileoli Pentalpha/S -Römerkragen/S \ No newline at end of file +Römerkragen/S +Alexander-von-Humboldt-Realschule +Augsburg-Haunstetten-Siebenbrunn +Denavit-Hartenberg-Parameter/S \ No newline at end of file diff --git a/languagetool-language-modules/de/src/main/resources/org/languagetool/resource/de/words_infix_s.txt b/languagetool-language-modules/de/src/main/resources/org/languagetool/resource/de/words_infix_s.txt index 73592c423c57..51b592c8b2f2 100644 --- a/languagetool-language-modules/de/src/main/resources/org/languagetool/resource/de/words_infix_s.txt +++ b/languagetool-language-modules/de/src/main/resources/org/languagetool/resource/de/words_infix_s.txt @@ -311,4 +311,5 @@ Werbeanbringung Wohlgeformtheit Anomalität Dämmerung -Studiengang \ No newline at end of file +Studiengang +Ayurveda \ No newline at end of file diff --git a/languagetool-language-modules/de/src/main/resources/org/languagetool/resource/de/words_no_infix_s.txt b/languagetool-language-modules/de/src/main/resources/org/languagetool/resource/de/words_no_infix_s.txt index 9ce5f1b43792..55f916b369ec 100644 --- a/languagetool-language-modules/de/src/main/resources/org/languagetool/resource/de/words_no_infix_s.txt +++ b/languagetool-language-modules/de/src/main/resources/org/languagetool/resource/de/words_no_infix_s.txt @@ -75,7 +75,6 @@ Teich Trail Villa Vinyl -Wacht Yacht Kirmes Gewächs @@ -1756,8 +1755,80 @@ Multizellen Aminosäuren Ausreißer Drehzahl -Absenk Gastro Ausdauer Anthropomorphismus -Charles-Bonnet-Syndrom \ No newline at end of file +Charles-Bonnet-Syndrom +Allergie +Trüffel +Fondue +Buddha +Zellulose +Angehörigen +Anthropomorphismus +Waffel +Black-Friday- +Anti- +All-in-One- +Remote-Work- +American-Football- +All-you-can-eat- +Double-Opt-In- +Cash-Conversion- +Al-Shifa- +Anti-Stokes– +Farm-to-Fork +Afro-Pop- +Afro- +Backup-Restore- +Before-Class- +Make-up- +Always-on- +Fake- +Build-to-Order- +Air-Asia- +Airport- +Workshop- +Continuous-Improvement- +Above-the-Fold- +CDU- +SPD- +AfD- +E-Commerce-Conversion- +E-Commerce- +Black-Week- +Boho- +Charles-Bonnet- +Allergiker +Vehicle-to-Grid- +Best-Practice- +Agri-Photovoltaik- +Face-to-Face- +CBD- +Hausstaubmilben +Cradle-to-Cradle- +Heavy-Metal- +Akkusativ +Dativ +Genitiv +Nominativ +Due-Diligence- +Deep-Learning- +Transformer- +Elektrolyse +Gebrauchshund +EU-Mercosur- +Go-To-Market +Feedback +Pop-Up- +Pop- +.com- +Business-to-Business- +B2B- +Geflüchteten +Coming-Home- +Gourmet +Betroffenen +E-Commerce +Adjektiv +Karaoke \ No newline at end of file diff --git a/languagetool-language-modules/de/src/test/java/org/languagetool/rules/de/GermanSpellerRuleTest.java b/languagetool-language-modules/de/src/test/java/org/languagetool/rules/de/GermanSpellerRuleTest.java index 94fcd85d9f93..11093288b5f4 100644 --- a/languagetool-language-modules/de/src/test/java/org/languagetool/rules/de/GermanSpellerRuleTest.java +++ b/languagetool-language-modules/de/src/test/java/org/languagetool/rules/de/GermanSpellerRuleTest.java @@ -61,6 +61,9 @@ public class GermanSpellerRuleTest { @Test public void testIgnoreMisspelledWord() throws IOException { GermanSpellerRule rule = new GermanSpellerRule(TestTools.getMessages("de"), GERMAN_DE); + assertTrue(rule.ignorePotentiallyMisspelledWord("Farm-to-Fork-Bereich")); + assertFalse(rule.ignorePotentiallyMisspelledWord("Englisch-KenntnisseWeitere")); + assertTrue(rule.ignorePotentiallyMisspelledWord("Black-Friday-Schnäppchen")); assertTrue(rule.ignorePotentiallyMisspelledWord("Atmosphärenkonzept")); assertTrue(rule.ignorePotentiallyMisspelledWord("Wölkchenbildung")); assertFalse(rule.ignorePotentiallyMisspelledWord("Abschlussgruße")); // probably "...grüße"