Install
openclaw skills install cuihua-i18n-helper๐ AI-powered internationalization (i18n) assistant for modern web applications. Automatically extract translatable strings, generate locale files, batch translate to 100+ languages, and maintain translation quality across your entire codebase. Built for developers who ship global products.
openclaw skills install cuihua-i18n-helperShip global products faster with AI-powered internationalization.
An intelligent i18n assistant that automates the tedious parts of internationalization:
Traditional i18n workflow is painful:
cuihua-i18n-helper automates ALL of this.
Tell your OpenClaw agent:
"Extract all translatable strings from src/"
The agent will:
"Translate to Chinese, Japanese, and Spanish"
The agent will:
"Check for missing translations"
The agent will:
Automatically detects translatable content:
// Before
<button>Submit</button>
<p>Hello, {username}!</p>
<input placeholder="Enter email" />
// After extraction
<button>{t('button.submit')}</button>
<p>{t('greeting.hello', { username })}</p>
<input placeholder={t('form.email_placeholder')} />
Supports:
Creates semantic, readable translation keys:
{
"button": {
"submit": "Submit",
"cancel": "Cancel",
"save": "Save"
},
"greeting": {
"hello": "Hello, {{username}}!",
"welcome": "Welcome back"
},
"form": {
"email_placeholder": "Enter email",
"password_placeholder": "Enter password"
}
}
Smart features:
Translate to 100+ languages instantly:
Supported providers:
Smart translation:
{{count}}, {username}<strong>Bold</strong>ยฉ ยฎ โขExample output:
// en.json
{
"user": {
"greeting": "Hello, {{name}}!",
"items_count": "You have {{count}} items"
}
}
// zh.json (Chinese)
{
"user": {
"greeting": "ไฝ ๅฅฝ๏ผ{{name}}๏ผ",
"items_count": "ไฝ ๆ {{count}} ไธช็ฉๅ"
}
}
// ja.json (Japanese)
{
"user": {
"greeting": "ใใใซใกใฏใ{{name}}ใใ๏ผ",
"items_count": "{{count}}ๅใฎใขใคใใ ใใใใพใ"
}
}
Automated quality assurance:
Checks:
Example report:
๐ Translation Quality Report
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Coverage: 95% (190/200 strings)
โ ๏ธ Issues Found: 5
1. Missing translations (zh.json):
- user.profile_updated
- error.network_timeout
2. Placeholder mismatch (ja.json):
- user.items_count
Expected: {{count}}
Found: {count}
3. Excessive length (de.json):
- button.submit_and_continue
English: 21 chars
German: 45 chars (214% longer)
๐ก Run with --fix to auto-fix common issues
Works seamlessly with popular frameworks:
React / Next.js:
import { useTranslation } from 'react-i18next';
function MyComponent() {
const { t } = useTranslation();
return <h1>{t('welcome.title')}</h1>;
}
Vue / Nuxt.js:
<template>
<h1>{{ $t('welcome.title') }}</h1>
</template>
Angular:
<h1>{{ 'welcome.title' | translate }}</h1>
Vanilla JS:
import i18n from './i18n';
document.getElementById('title').textContent = i18n.t('welcome.title');
Automate translation checks in your pipeline:
# .github/workflows/i18n.yml
name: i18n Check
on: [pull_request]
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Check i18n
run: |
openclaw agent run "Check for missing translations"
openclaw agent run "Verify translation quality"
Pre-commit hook:
#!/bin/bash
# .git/hooks/pre-commit
echo "๐ Checking i18n..."
openclaw agent run "Check for untranslated strings in staged files"
if [ $? -ne 0 ]; then
echo "โ Found untranslated strings. Please add translations."
exit 1
fi
User: "Set up i18n for my React project with English and Chinese"
Agent:
โ
i18n setup complete:
๐ฆ Installed dependencies:
- react-i18next
- i18next
๐ Created structure:
src/
i18n/
index.js (config)
locales/
en.json
zh.json
โ๏ธ Configured:
- Default language: en
- Fallback language: en
- Supported languages: en, zh
๐ก Next steps:
1. Import i18n in your root component
2. Wrap app with I18nextProvider
3. Use {t('key')} in components
User: "Extract all translatable strings from src/components/"
Agent:
๐ Scanning src/components/...
โ
Found 42 translatable strings:
- Button labels: 12
- Form placeholders: 8
- Error messages: 7
- Page titles: 6
- Tooltips: 5
- Other: 4
๐ Generated locale files:
locales/en.json (42 keys)
locales/zh.json (42 keys, auto-translated)
๐ Updated components:
- src/components/Button.jsx (3 strings)
- src/components/Form.jsx (8 strings)
- src/components/Header.jsx (2 strings)
...
๐ Coverage: 100%
๐ก Review translations in locales/ folder
User: "Add German and French translations"
Agent:
๐ Adding languages: de (German), fr (French)
๐ค Translating 42 strings...
[โโโโโโโโโโโโโโโโโโโโ] 100%
โ
Created locale files:
locales/de.json (42 keys)
locales/fr.json (42 keys)
โ ๏ธ Review recommended for:
- Technical terms (3 strings)
- Brand names (1 string)
- Colloquial expressions (2 strings)
๐ Translation provider: DeepL
๐ Cost: $0.02 (42 strings ร 2 languages)
๐ก Preview: http://localhost:3000?lng=de
User: "Check for missing translations"
Agent:
๐ Checking translation completeness...
๐ Coverage by language:
โ
en: 100% (50/50)
โ
zh: 100% (50/50)
โ ๏ธ ja: 94% (47/50)
โ ๏ธ de: 88% (44/50)
โ fr: 76% (38/50)
โ Missing in ja.json (3):
- user.profile_updated
- error.network_timeout
- settings.privacy_policy
โ Missing in de.json (6):
- user.profile_updated
- user.account_deleted
- error.network_timeout
- error.server_error
- settings.privacy_policy
- settings.terms_of_service
โ Missing in fr.json (12):
[... list truncated ...]
๐ก Fix: openclaw agent run "Translate missing strings to all languages"
User: "Remove unused translation keys"
Agent:
๐ Scanning codebase for used translation keys...
๐ Analysis:
Total keys: 50
Used keys: 45
Unused keys: 5
๐๏ธ Unused keys found:
- old.deprecated_feature (last used: 6 months ago)
- temp.debug_message (never used)
- test.sample_text (test artifact)
- button.old_submit (replaced by button.submit)
- error.obsolete_error (feature removed)
โ Remove these keys? (y/n)
User: "Yes"
โ
Removed 5 unused keys from all locale files
๐ Updated files:
- locales/en.json (-5 keys)
- locales/zh.json (-5 keys)
- locales/ja.json (-5 keys)
- locales/de.json (-5 keys)
- locales/fr.json (-5 keys)
๐พ Backup created: locales/.backup-2026-03-24/
User: "Mark translations needing review"
Agent:
๐ Analyzing translations for review...
โ ๏ธ Flagged for review (8 strings):
1. user.welcome_premium
Translation seems too literal
Suggestion: Use more natural phrasing
2. error.payment_failed (zh)
Contains English words: "payment"
Suggestion: Translate to "ๆฏไป"
3. button.purchase_now (de)
Too long for button (28 characters)
Suggestion: Shorten to "Jetzt kaufen"
๐ Created review.md with details
๐ก Next: Share review.md with translators
Create .i18nrc.json in your project root:
{
"sourceLanguage": "en",
"targetLanguages": ["zh", "ja", "de", "fr", "es"],
"localesPath": "./src/locales",
"extractFrom": ["./src"],
"ignore": ["**/*.test.js", "**/*.spec.js"],
"translationProvider": "deepl",
"keyStyle": "nested",
"keyCase": "snake_case",
"placeholderPattern": "{{%s}}",
"qualityChecks": {
"checkMissingTranslations": true,
"checkPlaceholders": true,
"checkLength": true,
"maxLengthRatio": 2.0
}
}
100+ languages including:
Popular:
And many more: Dutch, Swedish, Danish, Polish, Turkish, Thai, Vietnamese, Indonesian, Hindi, Hebrew, Greek, Czech, Romanian, Hungarian, Finnish, Norwegian, Ukrainian, and more!
DeepL (Recommended):
export DEEPL_API_KEY=your_api_key
Google Translate:
export GOOGLE_TRANSLATE_API_KEY=your_api_key
OpenAI:
export OPENAI_API_KEY=your_api_key
react-i18next:
npm install react-i18next i18next
vue-i18n:
npm install vue-i18n
angular-translate:
npm install @ngx-translate/core
MIT License - see LICENSE for details.
Built with ๐ธ by ็ฟ ่ฑ (Cuihua) for the OpenClaw community.
Special thanks to:
Made with ๐ธ | Cuihua Series | ClawHub Pioneer
Ship global products faster with AI-powered i18n.