Anmelden

LanguageTool.org

LanguageTool.org

http://wiki.languagetool.org/public-http-api

https://github.com/languagetool-org/languagetool-website/tree/master/www/online-check/tiny_mce

https://languagetool.org:8081/?language=de-DE&text=Deine+Sorgen+haben+ich+nicht

< matches software="LanguageTool" version="3.3-SNAPSHOT" buildDate="2016-02-14 22:01">
< language shortname="de-DE" name="German (Germany)"/>< error fromy="0" fromx="13" toy="0" tox="22" ruleId="DE_VERBAGREEMENT" msg="Möglicherweise fehlende grammatische Übereinstimmung zwischen Subjekt (ich) und Prädikat (haben) bezüglich Person oder Numerus (Einzahl, Mehrzahl - Beispiel: 'ich sind' statt 'ich bin')."replacements="habe ich#hatte ich#hätte ich#haben wir#haben sie" context="Deine Sorgen haben ich nicht" contextoffset="13" offset="13" errorlength="9" category="Grammatik" locqualityissuetype="uncategorized"/>
< /matches>

https://languagetool.org:8081/?language=de-DE&text=Deine+Sarge+habe+ich+nicht.

< matches software="LanguageTool" version="3.3-SNAPSHOT" buildDate="2016-02-14 22:01">
< language shortname="de-DE" name="German (Germany)"/>
< error fromy="0" fromx="0" toy="0" tox="11" ruleId="DE_AGREEMENT" 
msg="Möglicherweise fehlende grammatische Übereinstimmung zwischen Artikel und Nomen bezüglich Kasus, Genus oder Numerus."
replacements="Deine Särge"
context="Deine Sarge habe ich nicht."
contextoffset="0" offset="0" errorlength="11" category="Grammatik" locqualityissuetype="uncategorized"/>
< error fromy="0" fromx="6" toy="0" tox="11" ruleId="GERMAN_SPELLER_RULE"
msg="Möglicher Rechtschreibfehler gefunden"
replacements="Sorge#Sage#Sarg#Farge#Marge#Zarge#Sarde#Arge#Sarg-#Karge#Sarges#Sargs#Sauge#Särge#Frage#Lage#Lange#Tage#Sagen#Ware"
context="Deine Sarge habe ich nicht."
contextoffset="6" offset="6" errorlength="5" category="Mögliche Tippfehler" locqualityissuetype="misspelling"/>
< /matches>

11.09.2016 Neues API (JSON)

https://languagetool.org/http-api/swagger-ui/#!/default/post_check hier kann man das JSON-API ausprobieren.

Beispiel https://languagetool.org/api/v2/check?language=de-DE&text=Deine+Sooge+habe+ich+nicht

{"software":{"name":"LanguageTool","version":"3.5-SNAPSHOT","buildDate":"2016-09-10 22:01","apiVersion":"1","status":""},"language":{"name":"German (Germany)","code":"de-DE"},"matches":[{"message":"Möglicher Rechtschreibfehler gefunden","shortMessage":"Rechtschreibfehler","replacements":[{"value":"Sorge"},{"value":"Hooge"},{"value":"Kooge"},{"value":"Soge"},{"value":"Sowie"},{"value":"Folge"},{"value":"Google"},{"value":"Sorgen"},{"value":"Sonne"},{"value":"Sorgt"},{"value":"Song"},{"value":"Droge"},{"value":"Sorgte"},{"value":"Songs"},{"value":"Sog"},{"value":"Sorte"},{"value":"Solle"},{"value":"Boote"},{"value":"Moore"},{"value":"Siege"}],"offset":6,"length":5,"context":{"text":"Deine Sooge habe ich nicht","offset":6,"length":5},"rule":{"id":"GERMAN_SPELLER_RULE","description":"Möglicher Rechtschreibfehler","issueType":"misspelling","category":{"id":"TYPOS","name":"Mögliche Tippfehler"}}}]}
{
"software":{
"name":"LanguageTool",
"version":"3.5-SNAPSHOT",
"buildDate":"2016-09-10 22:01",
"apiVersion":"1","status":""
},
"language":{"name":"German (Germany)","code":"de-DE"},
"matches":[{
"message":"Möglicher Rechtschreibfehler gefunden",
"shortMessage":"Rechtschreibfehler",
"replacements":
[{"value":"Sorge"},{"value":"Hooge"},{"value":"Kooge"},{"value":"Soge"},
{"value":"Sowie"},{"value":"Folge"},{"value":"Google"},{"value":"Sorgen"},
{"value":"Sonne"},{"value":"Sorgt"},{"value":"Song"},{"value":"Droge"},
{"value":"Sorgte"},{"value":"Songs"},{"value":"Sog"},{"value":"Sorte"},
{"value":"Solle"},{"value":"Boote"},{"value":"Moore"},{"value":"Siege"}],
"offset":6,
"length":5,
"context":{
"text":"Deine Sooge habe ich nicht",
"offset":6,
"length":5},
"rule":{
"id":"GERMAN_SPELLER_RULE",
"description":"Möglicher Rechtschreibfehler",
"issueType":"misspelling",
"category":{
"id":"TYPOS",
"name":"Mögliche Tippfehler"
}
}
}]
}
{"software":{"name":"LanguageTool","version":"4.2-SNAPSHOT","buildDate":"2018-04-06 20:01","apiVersion":1,"premium":false,"premiumHint":"You might be missing errors only the Premium version can find. Contact us at support<at>languagetoolplus.com.","status":""},"warnings":{"incompleteResults":false},"language":{"name":"German (Germany)","code":"de-DE"},
"matches":[{
"message":"Möglicherweise fehlende grammatische Übereinstimmung zwischen Subjekt
(ich) und Prädikat (haben) bezüglich Person oder Numerus (Einzahl, Mehrzahl -
Beispiel: 'ich sind' statt 'ich bin').",
"shortMessage":"",
"replacements":
[{"value":"habe ich"},{"value":"hatte ich"},{"value":"hätte ich"},
{"value":"haben wir"},{"value":"haben sie"}],
"offset":12,
"length":9,
"context":{"text":"Deine Sorge haben ich nicht","offset":12,"length":9},
"sentence":"Deine Sorge haben ich nicht",
"rule":{
"id":"DE_VERBAGREEMENT","description":"Kongruenz von Subjekt und Prädikat
(nur 1. u. 2. Pers. od. m. Personalpronomen), z.B. 'Er bist (ist)'",
"issueType":"uncategorized",
"category":{"id":"GRAMMAR","name":"Grammatik"}
}
}]
}

TinyMCE

ControlExpert/languagetool-tinymce

Es gibt ein experimentelles Plugin auf Basis AtD-plugin:

https://github.com/ControlExpert/languagetool-tinymce

Die Popups werden gut gebaut, das Plugin kann aber nur Plain-Text verarbeiten. In CELLstudio kann der LT-Call ausgeführt werden:

  • php_curl muss installiert werden
    • VAIO PHP 5.4
    • ASUS PHP 5.5 (wurde auf Apache umgestellt)
    • QUAD
  • CmsTiny2004Cell version auf 3.5.6 umstellen
    • der Editor funktioniert nicht korrekt (Tools nicht angezeigt)
    • LT-Call funktioniert aber (VAio)

Plugin-Einbindung von LT direkt

http://wiki.languagetool.org/integration-on-websites

Beispiel https://www.korrekturen.de/grammatikpruefung.shtml

Funktion unbekannt, vermutlich nur Plain-Text.

AtD-Plugin

Die Verfahrensweise ist relativ überschaubar, jedoch ist die Plugin-Realisierung im tinyMCE keine einfache Sache. Der Code kann aber erfasst und bearbeitet werden.

AtD cms/js/tinymce-3.5.11/jscripts/tiny_mce/plugins/AtD/editor_plugin_src.js

  • editor_plugin_src.js enthält plugin.js mit core.js

Senderichtung

  • Editorinhalt wird als plain an Service gesendet, getContent({ format: 'raw' }

Empfangsrichtung

  • XML wird in Errors und Suggestions geparst
  • Ersetzung (markMyWords)
    • Inhalt einer node wird in Wörter zerlegt,
    • wenn Wörter in Errors enthalten, dann werden sie mit einem span (hiddenSpellError, pre) versehen
    • Ersetzung über regexp in nodeValue
    • pretoks (vorhergehendes Wort) dient der Ortung der Suggestions
  • Bei Klick
    • es wird nach Suggestions zum aktuellen span-element gesucht
    • Popupmenü neu befüllen und anzeigen
    • bei Auswahl Vorschlag wird span ersetzt und span entfernt

Erzeugung der LT-Variante

Senderichtung

  • Plain erzeugen
    • Tags entfernen, Positionen aller entfernten Tags speichern (Tag: Start, Länge)
    • für Tags eventuell Zeichen (Leerzeichen, Komma hinzufügen (Tabelleninhalte, Aufzählungen) Positionen Trennzeichen speichern (Tag: Start, Länge)

Empfangsrichtung

  • JSON in Errors und Suggestions parsen
    • eventuell können Errors und Suggestions zusammengeführt werden (Ranges)
    • plain-Positionen wieder auf Original mappen
    • Positionen abspeichern
  • Ersetzung (markMyWords)
    • Ranges mit einem span (hiddenSpellError) versehen
    • Ersetzung über substring im editor-Content
  • Bei Klick
    • es wird nach Suggestions zum aktuellen span-element gesucht
    • Popupmenü neu befüllen und anzeigen
    • bei Auswahl Vorschlag wird span ersetzt und span entfernt

   
Top

Wir arbeiten mit Software von http://www.campus21.de.

Verantwortlich für angezeigte Daten ist der Webdomain-Eigentümer laut Impressum.

Suche