42 lines
1003 B
Python
42 lines
1003 B
Python
"""Optional grammar correction using LanguageTool."""
|
|
|
|
_tool = None
|
|
_lang = None
|
|
|
|
_LANG_MAP = {
|
|
"de": "de-DE",
|
|
"en": "en-US",
|
|
"fr": "fr-FR",
|
|
"es": "es",
|
|
"it": "it",
|
|
}
|
|
|
|
|
|
def init(lang, log=print):
|
|
"""Pre-initialize LanguageTool. Call once at startup."""
|
|
global _tool, _lang
|
|
if lang == _lang and _tool is not None:
|
|
return
|
|
_lang = lang
|
|
try:
|
|
import language_tool_python
|
|
lt_lang = _LANG_MAP.get(lang, lang or "de-DE")
|
|
_tool = language_tool_python.LanguageTool(lt_lang)
|
|
log("Grammar checker ready.")
|
|
except ImportError:
|
|
_tool = None
|
|
log("language_tool_python not installed — grammar check disabled.")
|
|
except Exception as e:
|
|
_tool = None
|
|
log(f"Grammar checker init failed: {e}")
|
|
|
|
|
|
def correct(text):
|
|
"""Correct grammar, capitalization, and punctuation."""
|
|
if _tool is None:
|
|
return text
|
|
try:
|
|
return _tool.correct(text)
|
|
except Exception:
|
|
return text
|