OpenClaw is a powerful AI agent framework — but by default, models generate output that often has wrong diacritics, mixed languages, or mechanically garbled text when users communicate in non-English languages. This skill fixes that with two layers:
Layer 1 — SKILL.md: Configures the agent to think and respond correctly in the user's language. Language detection, diacritics enforcement, locale formatting, cultural communication norms.
Layer 2 — Post-Processor: A Python script that mechanically cleans the model's raw output before it reaches the user. This is the unique part — no other ClawHub skill does this. It catches the specific mechanical errors that models reliably produce on non-English text: missing diacritics, stray Chinese/Russian characters, merged words, common typos.
LanguageCodeStatusDiacriticsLaunchRomanianroStableă â î ș țv1.0GermandeStableü ö ä ßv1.0FrenchfrPlannedà â ç é è ê ë î ï ô û üv1.1SpanishesPlannedá é í ó ú ñ ü ¿ ¡v1.1ItalianitPlannedà è é ì ò ó ùv1.2PortugueseptPlannedà á â ã ç é ê í ó ô õ úv1.2
English (en) is always the fallback when detection fails.
text
User: "Set language to Romanian" → sets active language to RO
User: "Setează limba la română" → same
User: "Stelle Sprache auf Deutsch" → sets active language to DE
User: "Reset language to auto-detect" → reverts to auto-detection
Configuration persists across sessions via OpenClaw memory tools.
Romanian: ă â î ș ț — always correct, never write "s" instead of "ș" or "t" instead of "ț" in Romanian words.
German: ü ö ä ß — never substitute with "ue", "oe", "ae" unless user explicitly asks for old spelling.
ElementFormatDate15 martie 2026Currency150 lei / 30 euro / 29,99 €Phone+40 734 270 188 / 0721 234 567AddressStrada Victoriei nr. 10, București
ElementFormatDate15. März 2026 / 15.03.2026Currency29,99 € / 150 €Phone+49 30 12345678 / 0171 2345678AddressHauptstraße 10, 10115 Berlin
The i18n_processor.py script runs after the model generates output and
before it reaches the user. This is critical — it fixes mechanical errors
that slip through even when the model "knows" the correct form.
The agent should pipe output through the processor:
python
from i18n_processor import process
cleaned = process(raw_output, language_code)
# send 'cleaned' to user
When this skill is active, every model response should be treated as raw
output and passed through process(response, detected_language) before
delivery. The agent never sees this step — it's transparent to the user.
Language preference is stored via OpenClaw memory tools:
i18n_language — the active language code (e.g., "ro", "de")i18n_mode — "auto" or "manual"i18n_detection_confidence — last confidence score (0.0–1.0)When i18n_mode is "auto", the agent re-evaluates language on each session
start but respects manual overrides until reset.
CommandEffect"Set language to Romanian"Lock to RO"Setează limba la română"Lock to RO"Stelle Sprache auf Deutsch"Lock to DE"Reset language to auto-detect"Back to autoSymbolMeaningă â î ș țRomanian diacriticsü ö ä ßGerman diacritics🌐Language indicator🌍i18n skill active
If the post-processor encounters ambiguous text:
Rule: The cost of a missed diacritic is lower than the cost of a wrong one.