Install
openclaw skills install openclaw-i18n-skillInternationalization and localization layer for OpenClaw. Auto-detects language, enforces correct diacritics, formats dates/currency per locale, and pipes output through a post-processing cleaner. Supports Romanian and German at launch.
openclaw skills install openclaw-i18n-skillOpenClaw 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.
| Language | Code | Status | Diacritics | Launch |
|---|---|---|---|---|
| Romanian | ro | Stable | ă â î ș ț | v1.0 |
| German | de | Stable | ü ö ä ß | v1.0 |
| French | fr | Planned | à â ç é è ê ë î ï ô û ü | v1.1 |
| Spanish | es | Planned | á é í ó ú ñ ü ¿ ¡ | v1.1 |
| Italian | it | Planned | à è é ì ò ó ù | v1.2 |
| Portuguese | pt | Planned | à á â ã ç é ê í ó ô õ ú | v1.2 |
English (en) is always the fallback when detection fails.
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.
| Element | Format |
|---|---|
| Date | 15 martie 2026 |
| Currency | 150 lei / 30 euro / 29,99 € |
| Phone | +40 734 270 188 / 0721 234 567 |
| Address | Strada Victoriei nr. 10, București |
| Element | Format |
|---|---|
| Date | 15. März 2026 / 15.03.2026 |
| Currency | 29,99 € / 150 € |
| Phone | +49 30 12345678 / 0171 2345678 |
| Address | Hauptstraß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:
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.
| Command | Effect |
|---|---|
| "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 auto |
| Symbol | Meaning |
|---|---|
| ă â î ș ț | 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.