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

  1. Open your OpenClaw workspace
  2. 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.