Overview
LocaleFlow is a two-layer internationalization system for OpenClaw that ensures your AI agent outputs clean, properly formatted text in any supported language.
Why LocaleFlow?
- Fixes diacritics: Romanian "ă â î ș ț" and German "ü ö ä ß" are corrected automatically
- Removes stray characters: No more random Chinese or Cyrillic characters in your output
- Locale-aware formatting: Dates, currency, and phone numbers in local formats
- Conservative approach: When uncertain, we leave text unchanged — no false positives
Supported Languages
| Language | Code | Status | Diacritics Fixed | Typos Corrected |
|---|---|---|---|---|
| Romanian | ro |
Stable | ă, â, î, ș, ț | 30+ |
| German | de |
Stable | ü, ö, ä, ß | 20+ |
| French | fr |
Stable | é, è, ê, ë, à, â, ù, û, ç | 60+ |
| Spanish | es |
Stable | á, é, í, ó, ú, ñ, ¿, ¡ | 100+ |
| Italian | it |
Coming v1.1 | — | — |
| Portuguese | pt |
Coming v1.1 | — | — |
Installation
- Open your OpenClaw workspace
- Install via ClawHub:
clawhub install bloommediacorporation-lab/openclaw-i18n-skill
Or clone manually and configure:
git clone https://github.com/bloommediacorporation-lab/openclaw-i18n-skill.git
cd openclaw-i18n-skill/processor
pip install -r requirements.txt
Configuration
Setting Language
To set your preferred language:
- Say:
"Set language to Romanian" - Or:
"Setează limba la română" - Or:
"Stelle Sprache auf Deutsch"
Resetting to Auto-Detect
Say: "Reset language to auto-detect"
Configuration Persistence
Language preferences are stored in memory across sessions. The agent remembers your choice until you reset it.
Post-Processor
The post-processor runs after the model generates output and before it reaches the user. It applies these fixes:
What It Fixes
- Missing diacritics: "vrau" → "vreau", "Mueller" → "Müller"
- Stray non-Latin characters: Removes Chinese/Cyrillic artifacts glued to Latin text
- Whitespace issues: Normalizes double spaces, removes trailing spaces
- Common typos: Fixes model-specific patterns like "trebuie sa" → "trebuie să"
What It Doesn't Fix
- Grammar errors requiring context understanding
- Wrong word choice (semantic errors)
- Sentence structure problems
- Intentional foreign text (proper names, quoted phrases)
Language Detection
When auto-detection is enabled, the system analyzes:
- Explicit language statements ("I speak Romanian", " vorbesc română")
- User names and place references
- Writing style and diacritic usage
If confidence is below 80%, the agent will ask you to confirm the language.
Locale Formats
| Element | Romanian | German | French | Spanish |
|---|---|---|---|---|
| Date | 15 martie 2026 | 15. März 2026 | 15 mars 2026 | 15 de marzo de 2026 |
| Currency | 150 lei / 29,99 € | 29,99 € / 150 € | 29,99 € | 29,99 € |
| Phone | +40 734 270 188 | +49 30 12345678 | +33 1 23 45 67 89 | +34 91 123 45 67 |
Troubleshooting
Diacritics not being fixed
Make sure the language is set correctly. Say "Set language to Romanian" or "Set language to German".
Wrong language detected
Use explicit commands to set language. Say "Set language to [language]" to override auto-detection.
Legitimate foreign text removed
If you have legitimate foreign text (proper names, technical terms), ensure there's a space before it. The post-processor only removes non-Latin characters glued directly to Latin text.
Double spaces appearing
This is rare but can happen with certain input patterns. The normalize_whitespace function should fix this. If it persists, please report the issue.
False positives
If you see text incorrectly modified, please report the issue. We maintain a conservative 95%+ confidence threshold to minimize false positives.
FAQ
Does LocaleFlow work with all languages?
Romanian, German, French, and Spanish are stable. Italian and Portuguese are planned for v1.1. English is supported as passthrough.
Can I use multiple languages in one conversation?
The system detects and maintains one active language per conversation. You can switch languages using configuration commands.
Does it work with other OpenClaw skills?
Yes! LocaleFlow is designed to work alongside other skills. It processes output just before it reaches the user.
What's the accuracy?
We maintain a 95%+ confidence threshold. When uncertain, we leave text unchanged to avoid introducing errors.
Can I contribute?
Yes! Contributions are welcome. Check our GitHub repo for guidelines.