Skill flagged โ€” suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Cuihua i18n Helper

v1.0.0

๐ŸŒ AI-powered internationalization (i18n) assistant for modern web applications. Automatically extract translatable strings, generate locale files, batch tra...

โญ 0ยท 82ยท0 currentยท0 all-time
Security Scan
VirusTotalVirusTotal
Benign
View report โ†’
OpenClawOpenClaw
Suspicious
medium confidence
โ„น
Purpose & Capability
Name/description and included code are coherent with an i18n extraction/locale-management tool (Node script, React/Vue extraction patterns, locale files). However the SKILL.md advertises batch translation via DeepL, Google, OpenAI, Azure and LibreTranslate but the skill declares no required environment variables or primary credential. Real provider integrations normally require API keys/endpoint config, so either the code expects you to supply keys at runtime (not declared) or the translation step may rely on the agent's own LLM rather than explicit provider APIs. This discrepancy is unexplained.
โ„น
Instruction Scope
Runtime instructions ask the agent to scan source folders (e.g., src/) and run node i18n-helper.js which will read project files and write/update locale JSON files and potentially auto-fix issues (--fix). That behavior is consistent with the stated purpose, but it does give the skill authority to read and modify project files. The SKILL.md does not instruct the agent to read unrelated system paths or secrets, nor does it grant broad open-ended data collection, but the file-modification capability is significant and should be run on a trusted or sandboxed copy first.
โœ“
Install Mechanism
No install spec โ€” instruction-only with included Node script. This is low-risk compared to downloading and executing archives from external URLs. The agent will rely on the existing node binary which is declared as required.
!
Credentials
The skill lists multiple third-party translation providers (DeepL, Google, OpenAI, Azure), but requires no environment variables or credentials in its metadata. Provider access normally requires API keys and endpoint configuration (e.g., DEEPL_API_KEY, GOOGLE_API_KEY, OPENAI_API_KEY, AZURE_*). The absence of declared env vars is a mismatch: the agent may prompt for credentials at runtime, expect global system creds, or contain hidden/undocumented network calls. This is the main proportionality concern.
โœ“
Persistence & Privilege
always is false, user-invocable is true, and there are no declared config paths or requests to change other skills. The skill will write locale files within the project (local file persistence), which is expected for its purpose. No system-wide persistence or cross-skill config changes are indicated.
What to consider before installing
This skill appears to do what it says โ€” extract strings and manage locale files โ€” but review a few things before you run it on a real repo: - Credentials: The documentation says it supports DeepL/Google/OpenAI/Azure, but the skill metadata declares no API keys. Expect the tool to ask you for provider keys at runtime or to attempt network calls; do not paste secrets into prompts without verifying where they are stored/used. - File writes: The tool will read your source tree and write/update locales/*.json and can auto-fix code. Run it first on a copy or in a branch so you can review changes. - Network behavior: Inspect the rest of i18n-helper.js (the truncated portion) for any outbound network calls or hard-coded endpoints before giving it network access. If it tries to call translation APIs, ensure you provide credentials via safe environment variables and not in a chat. - Least privilege: If you only need extraction, avoid enabling automatic translation or --fix until you confirm behavior. Prefer local/self-hosted providers (LibreTranslate) if you want to avoid sending strings to third-party services. What would change this assessment: seeing explicit code that contacts translation provider endpoints and where it expects API keys (or evidence that no provider integration exists). If the script includes clear, well-documented environment variable names for provider credentials and instructions on secure usage, the proportionality concern would be reduced.

Like a lobster shell, security has layers โ€” review code before you run it.

Runtime requirements

Binsnode
latestvk97cbg8h2r2ez361a8c9a2kqqs83h6ss
82downloads
0stars
1versions
Updated 3w ago
v1.0.0
MIT-0

cuihua-i18n-helper - AI i18n Assistant ๐ŸŒ

Ship global products faster with AI-powered internationalization.

An intelligent i18n assistant that automates the tedious parts of internationalization:

  • ๐Ÿ” Auto-extract translatable strings from your code
  • ๐Ÿค– AI-translate to 100+ languages in seconds
  • โœ… Quality checks for consistency and completeness
  • ๐Ÿ“Š Reports on translation coverage and health
  • ๐Ÿ”„ Sync translations across multiple frameworks

๐ŸŽฏ Why cuihua-i18n-helper?

Traditional i18n workflow is painful:

  1. โŒ Manually find all hardcoded strings
  2. โŒ Manually create translation keys
  3. โŒ Manually copy to each locale file
  4. โŒ Manually send to translators
  5. โŒ Manually track what's missing
  6. โŒ Manually clean up unused translations

cuihua-i18n-helper automates ALL of this.


๐Ÿš€ Quick Start

Extract translatable strings

Tell your OpenClaw agent:

"Extract all translatable strings from src/"

The agent will:

  • Find all hardcoded UI text
  • Generate semantic translation keys
  • Create locale files for your languages
  • Show translation coverage report

Translate to multiple languages

"Translate to Chinese, Japanese, and Spanish"

The agent will:

  • Batch translate all strings
  • Preserve formatting and placeholders
  • Check translation quality
  • Report any issues

Check translation health

"Check for missing translations"

The agent will:

  • Find missing translations
  • Find unused translation keys
  • Check for consistency issues
  • Generate actionable report

๐ŸŽจ Features

1. Smart String Extraction ๐Ÿ”

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:

  • JSX/TSX (React)
  • Vue templates
  • Angular templates
  • Plain JavaScript strings
  • Template literals with variables

2. Intelligent Key Generation ๐Ÿง 

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:

  • Context-aware naming
  • Namespace organization
  • Collision prevention
  • Consistent naming conventions

3. Batch Translation ๐ŸŒ

Translate to 100+ languages instantly:

Supported providers:

  • โœ… DeepL (best quality)
  • โœ… Google Translate (fast, free tier)
  • โœ… OpenAI GPT (context-aware)
  • โœ… Azure Translator
  • โœ… LibreTranslate (self-hosted)

Smart translation:

  • Preserves placeholders: {{count}}, {username}
  • Handles HTML tags: <strong>Bold</strong>
  • Keeps special characters: ยฉ ยฎ โ„ข
  • Context-aware translations

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}}ๅ€‹ใฎใ‚ขใ‚คใƒ†ใƒ ใŒใ‚ใ‚Šใพใ™"
  }
}

4. Translation Quality Checks โœ…

Automated quality assurance:

Checks:

  • โœ… Missing translations
  • โœ… Placeholder mismatches
  • โœ… Inconsistent terminology
  • โœ… Excessive string length
  • โœ… Untranslated strings (still in source language)
  • โœ… HTML tag mismatches
  • โœ… Special character issues

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

5. Framework Integration ๐Ÿ”ง

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');

6. CI/CD Integration ๐Ÿ”„

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

๐Ÿ“‹ Usage Examples

Example 1: New Project Setup

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

Example 2: Extract from Existing Code

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

Example 3: Add New Language

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

Example 4: Find Missing Translations

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"

Example 5: Clean Up Unused Translations

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/

Example 6: Translation Review Workflow

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

โš™๏ธ Configuration

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
  }
}

๐ŸŒ Supported Languages

100+ languages including:

Popular:

  • ๐Ÿ‡จ๐Ÿ‡ณ Chinese (Simplified, Traditional)
  • ๐Ÿ‡ฏ๐Ÿ‡ต Japanese
  • ๐Ÿ‡ฐ๐Ÿ‡ท Korean
  • ๐Ÿ‡ฉ๐Ÿ‡ช German
  • ๐Ÿ‡ซ๐Ÿ‡ท French
  • ๐Ÿ‡ช๐Ÿ‡ธ Spanish
  • ๐Ÿ‡ฎ๐Ÿ‡น Italian
  • ๐Ÿ‡ท๐Ÿ‡บ Russian
  • ๐Ÿ‡ต๐Ÿ‡น Portuguese
  • ๐Ÿ‡ฆ๐Ÿ‡ช Arabic

And many more: Dutch, Swedish, Danish, Polish, Turkish, Thai, Vietnamese, Indonesian, Hindi, Hebrew, Greek, Czech, Romanian, Hungarian, Finnish, Norwegian, Ukrainian, and more!


๐Ÿ’ฐ Pricing

Free Tier

  • โœ… Extract up to 100 strings
  • โœ… 2 target languages
  • โœ… Basic quality checks
  • โœ… Google Translate only

Pro ($12/month)

  • โœ… Unlimited extraction
  • โœ… Unlimited languages
  • โœ… All translation providers
  • โœ… Advanced quality checks
  • โœ… CI/CD integration
  • โœ… Priority support

Enterprise ($99/month)

  • โœ… Everything in Pro
  • โœ… Team collaboration
  • โœ… Translation memory
  • โœ… Custom translation engines
  • โœ… On-premise deployment
  • โœ… SLA support

๐Ÿ”’ Privacy & Security

  • โœ… Local processing - Extraction happens locally
  • โœ… Secure API calls - Encrypted communication with translation providers
  • โœ… No data retention - Translations not stored on our servers
  • โœ… Self-hosted option - Use LibreTranslate for complete privacy

๐Ÿค Integration

Translation Providers

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

i18n Libraries

react-i18next:

npm install react-i18next i18next

vue-i18n:

npm install vue-i18n

angular-translate:

npm install @ngx-translate/core

๐Ÿ“š Resources


๐Ÿ“œ License

MIT License - see LICENSE for details.


๐Ÿ™ Acknowledgments

Built with ๐ŸŒธ by ็ฟ ่Šฑ (Cuihua) for the OpenClaw community.

Special thanks to:

  • OpenClaw team for the amazing framework
  • i18next, vue-i18n, and other i18n library maintainers
  • Translation API providers
  • Early adopters and contributors

Made with ๐ŸŒธ | Cuihua Series | ClawHub Pioneer

Ship global products faster with AI-powered i18n.

Comments

Loading comments...