mirror of
https://github.com/qingchencloud/clawpanel.git
synced 2026-05-06 20:02:49 +08:00
i18n: - Add 9 new locale files (ja/ko/de/es/fr/pt/ru/vi/zh-TW) - Add multilingual README files for all 11 languages - Add locale helper, index, and modular translation system - Add translation generation scripts Website (docs/index.html): - Replace 公益AI接口 branding with 晴辰云AI接口 - Remove OpenClaw 独立安装包 promotion block - Update SEO meta tags (description, keywords, OG, Twitter, JSON-LD) - Add 11-language README links to footer - Update 元宝派 link to new URL Bug fixes: - fix(cron): delivery format mode:'push' → mode:'announce', remove invalid 'to' field (fixes #141) - fix(cron): allow single-channel users to select delivery channel - fix(cron): preserve delivery field in job state for editing - fix(models): add 'ollama' as recognized API type, prevent overwriting native ollama config (fixes #140) - fix(models): skip /v1 append for ollama native API baseUrl - fix(assistant): normalize 'google-generative-ai' consistently, add ollama hints - fix(version): use CLI path classification for source detection on Windows (fixes #139) - fix(version): default to 'official' instead of 'chinese' when source unknown - fix(version): reorder npm global package check based on active CLI
This commit is contained in:
165
README.de.md
Normal file
165
README.de.md
Normal file
@@ -0,0 +1,165 @@
|
||||
<p align="center">
|
||||
<img src="public/images/logo-brand.png" width="360" alt="ClawPanel">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
OpenClaw-Verwaltungspanel mit integriertem KI-Assistenten — Installation, Konfiguration, Diagnose & Reparatur mit einem Klick
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="README.md">🇨🇳 中文</a> | <a href="README.en.md">🇺🇸 English</a> | <a href="README.zh-TW.md">🇹🇼 繁體中文</a> | <a href="README.ja.md">🇯🇵 日本語</a> | <a href="README.ko.md">🇰🇷 한국어</a> | <a href="README.vi.md">🇻🇳 Tiếng Việt</a> | <a href="README.es.md">🇪🇸 Español</a> | <a href="README.pt.md">🇧🇷 Português</a> | <a href="README.ru.md">🇷🇺 Русский</a> | <a href="README.fr.md">🇫🇷 Français</a> | <strong>🇩🇪 Deutsch</strong>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/qingchencloud/clawpanel/releases/latest">
|
||||
<img src="https://img.shields.io/github/v/release/qingchencloud/clawpanel?style=flat-square&color=6366f1" alt="Release">
|
||||
</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/releases/latest">
|
||||
<img src="https://img.shields.io/github/downloads/qingchencloud/clawpanel/total?style=flat-square&color=8b5cf6" alt="Downloads">
|
||||
</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/blob/main/LICENSE">
|
||||
<img src="https://img.shields.io/badge/license-AGPL--3.0-blue.svg?style=flat-square" alt="License">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
<p align="center">
|
||||
<img src="docs/feature-showcase.gif" width="800" alt="ClawPanel Showcase">
|
||||
</p>
|
||||
|
||||
ClawPanel ist ein visuelles Verwaltungspanel für das KI-Agenten-Framework [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslation). Mit einem **integrierten intelligenten KI-Assistenten**, der bei der Ein-Klick-Installation von OpenClaw hilft, Konfigurationen automatisch diagnostiziert, Probleme behebt und Fehler korrigiert. 8 Werkzeuge + 4 Modi + interaktives Q&A — einfache Verwaltung für Anfänger und Experten.
|
||||
|
||||
> 🌐 **Website**: [claw.qt.cool](https://claw.qt.cool/) | 📦 **Download**: [GitHub Releases](https://github.com/qingchencloud/clawpanel/releases/latest)
|
||||
|
||||
### 🎁 QingchenCloud AI API
|
||||
|
||||
> Interne technische Testplattform, für ausgewählte Benutzer zugänglich. Tägliches Anmelden für Credits.
|
||||
|
||||
<p align="center">
|
||||
<a href="https://gpt.qt.cool"><img src="https://img.shields.io/badge/🔑 QingchenCloud AI-gpt.qt.cool-6366f1?style=for-the-badge" alt="QingchenCloud AI"></a>
|
||||
</p>
|
||||
|
||||
- **Tägliche Anmelde-Credits** — Tägliches Anmelden + Freunde einladen für Test-Credits
|
||||
- **OpenAI-kompatible API** — Nahtlose Integration mit OpenClaw
|
||||
- **Ressourcenrichtlinie** — Ratenbegrenzung + Anfragelimit, mögliche Warteschlange zu Stoßzeiten
|
||||
- **Modellverfügbarkeit** — Modelle/APIs gemäß aktueller Seitenanzeige, Versionsrotation möglich
|
||||
|
||||
> ⚠️ **Compliance**: Nur für technische Tests. Illegale Nutzung oder Umgehung von Sicherheitsmechanismen ist verboten. Bewahren Sie Ihren API Key sicher auf. Regeln unterliegen den neuesten Plattformrichtlinien.
|
||||
|
||||
### 🔥 Entwicklerboard- / Embedded-Geräte-Unterstützung
|
||||
|
||||
- **Orange Pi / Raspberry Pi / RK3588** — `npm run serve` zum Ausführen
|
||||
- **Docker ARM64** — `docker run ghcr.io/qingchencloud/openclaw:latest`
|
||||
- **Armbian / Debian / Ubuntu Server** — Automatische Architekturerkennung
|
||||
- Kein Rust / Tauri / GUI erforderlich — **nur Node.js 18+**
|
||||
|
||||
## Community
|
||||
|
||||
Eine Community leidenschaftlicher KI-Agenten-Entwickler und -Enthusiasten — treten Sie bei!
|
||||
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/U9AttmsNHh"><strong>Discord</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/discussions"><strong>Discussions</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/issues/new"><strong>Issue melden</strong></a>
|
||||
</p>
|
||||
|
||||
## Funktionen
|
||||
|
||||
- **🤖 KI-Assistent (Neu)** — Integrierter KI-Assistent, 4 Modi + 8 Werkzeuge + interaktives Q&A
|
||||
- **🖼️ Bilderkennung** — Screenshots einfügen oder Bilder ziehen, KI analysiert automatisch
|
||||
- **Dashboard** — Systemübersicht, Echtzeit-Service-Monitoring
|
||||
- **Serviceverwaltung** — OpenClaw starten/stoppen, Versionserkennung und Ein-Klick-Upgrade
|
||||
- **Modellkonfiguration** — Multi-Provider-Verwaltung, Batch-Konnektivitätstests, Drag-Sortierung
|
||||
- **Gateway-Konfiguration** — Port, Zugriffsbereich, Auth-Token, Tailscale
|
||||
- **Nachrichtenkanäle** — Einheitliche Verwaltung von Telegram, Discord, Feishu, DingTalk, QQ
|
||||
- **Kommunikation & Automatisierung** — Nachrichteneinstellungen, Broadcast, Webhooks, Ausführungsgenehmigung
|
||||
- **Nutzungsanalyse** — Token-Verbrauch, API-Kosten, Modell-/Provider-Rankings
|
||||
- **Agent-Verwaltung** — Agent-CRUD, Identitätsbearbeitung, Workspace-Verwaltung
|
||||
- **Chat** — Streaming, Markdown-Rendering, Sitzungsverwaltung
|
||||
- **Geplante Aufgaben** — Cron-basierte Ausführung, Mehrkanalzustellung
|
||||
- **Log-Viewer** — Echtzeit-Logs aus mehreren Quellen und Suche
|
||||
- **Speicherverwaltung** — Speicherdateien ansehen/bearbeiten, ZIP-Export, Agent-Wechsel
|
||||
- **QingchenCloud AI API** — Interne Testplattform, OpenAI-kompatibel
|
||||
- **Erweiterungswerkzeuge** — cftunnel-Tunnelverwaltung, ClawApp-Statusüberwachung
|
||||
- **Über** — Versionsinformationen, Community-Links, verwandte Projekte
|
||||
|
||||
## Download & Installation
|
||||
|
||||
Besuchen Sie [Releases](https://github.com/qingchencloud/clawpanel/releases/latest) für die neueste Version:
|
||||
|
||||
| Plattform | Installer |
|
||||
|----------|----------|
|
||||
| **Windows** | `.exe` (empfohlen) oder `.msi` |
|
||||
| **macOS Apple Silicon** | `.dmg` (aarch64) |
|
||||
| **macOS Intel** | `.dmg` (x64) |
|
||||
| **Linux** | `.AppImage` / `.deb` / `.rpm` |
|
||||
|
||||
### Linux-Server (Web-Version)
|
||||
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/qingchencloud/clawpanel/main/scripts/linux-deploy.sh | bash
|
||||
```
|
||||
|
||||
### Docker
|
||||
|
||||
```bash
|
||||
docker run -d --name clawpanel --restart unless-stopped \
|
||||
-p 1420:1420 -v clawpanel-data:/root/.openclaw \
|
||||
node:22-slim \
|
||||
sh -c "apt-get update && apt-get install -y git && \
|
||||
npm install -g @qingchencloud/openclaw-zh --registry https://registry.npmmirror.com && \
|
||||
git clone https://github.com/qingchencloud/clawpanel.git /app && \
|
||||
cd /app && npm install && npm run build && npm run serve"
|
||||
```
|
||||
|
||||
## Schnellstart
|
||||
|
||||
1. **Ersteinrichtung** — Beim ersten Start automatische Erkennung von Node.js, Git, OpenClaw. Ein-Klick-Installation bei Bedarf
|
||||
2. **Modelle konfigurieren** — KI-Anbieter hinzufügen (DeepSeek, OpenAI, Ollama usw.) und Konnektivität testen
|
||||
3. **Gateway starten** — Zur Serviceverwaltung gehen, „Starten" klicken. Grüner Status = bereit
|
||||
4. **Chat starten** — Zum Live-Chat gehen, Modell auswählen und Gespräch beginnen
|
||||
|
||||
## Technische Architektur
|
||||
|
||||
| Schicht | Technologie | Beschreibung |
|
||||
|---------|-----------|-------------|
|
||||
| Frontend | Vanilla JS + Vite | Kein Framework, leichtgewichtig |
|
||||
| Backend | Rust + Tauri v2 | Native Performance, plattformübergreifend |
|
||||
| Kommunikation | Tauri IPC + Shell Plugin | Frontend-Backend-Brücke |
|
||||
| Styling | Pure CSS (CSS Variables) | Dunkles/Helles Theme |
|
||||
|
||||
## Aus Quellcode bauen
|
||||
|
||||
```bash
|
||||
git clone https://github.com/qingchencloud/clawpanel.git
|
||||
cd clawpanel && npm install
|
||||
|
||||
# Desktop (erfordert Rust + Tauri v2)
|
||||
npm run tauri dev # Entwicklung
|
||||
npm run tauri build # Produktion
|
||||
|
||||
# Nur Web (kein Rust nötig)
|
||||
npm run dev # Hot Reload
|
||||
npm run build && npm run serve # Produktion
|
||||
```
|
||||
|
||||
## Verwandte Projekte
|
||||
|
||||
| Projekt | Beschreibung |
|
||||
|---------|-------------|
|
||||
| [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslation) | KI-Agenten-Framework |
|
||||
| [ClawApp](https://github.com/qingchencloud/clawapp) | Plattformübergreifender mobiler Chat |
|
||||
| [cftunnel](https://github.com/qingchencloud/cftunnel) | Cloudflare Tunnel Tool |
|
||||
|
||||
## Beitragen
|
||||
|
||||
Issues und Pull Requests sind willkommen. Siehe [CONTRIBUTING.md](CONTRIBUTING.md).
|
||||
|
||||
## Lizenz
|
||||
|
||||
[AGPL-3.0](LICENSE). Kontaktieren Sie uns für eine kommerzielle Lizenz.
|
||||
|
||||
© 2026 QingchenCloud | [claw.qt.cool](https://claw.qt.cool)
|
||||
253
README.en.md
253
README.en.md
@@ -7,7 +7,7 @@
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="README.md">🇨🇳 中文</a> | <strong>🇺🇸 English</strong>
|
||||
<a href="README.md">🇨🇳 中文</a> | <strong>🇺🇸 English</strong> | <a href="README.zh-TW.md">🇹🇼 繁體中文</a> | <a href="README.ja.md">🇯🇵 日本語</a> | <a href="README.ko.md">🇰🇷 한국어</a> | <a href="README.vi.md">🇻🇳 Tiếng Việt</a> | <a href="README.es.md">🇪🇸 Español</a> | <a href="README.pt.md">🇧🇷 Português</a> | <a href="README.ru.md">🇷🇺 Русский</a> | <a href="README.fr.md">🇫🇷 Français</a> | <a href="README.de.md">🇩🇪 Deutsch</a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
@@ -31,85 +31,26 @@
|
||||
<img src="docs/feature-showcase.gif" width="800" alt="ClawPanel Feature Showcase">
|
||||
</p>
|
||||
|
||||
ClawPanel is a visual management panel for the [OpenClaw](https://openclaw.ai) AI Agent framework. It features a **built-in intelligent AI assistant** that helps you install OpenClaw with one click, auto-diagnose configurations, troubleshoot issues, and fix errors. 8 tools + 4 modes + interactive Q&A — easy to manage for beginners and experts alike.
|
||||
ClawPanel is a visual management panel for the [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslation) AI Agent framework. It features a **built-in intelligent AI assistant** that helps you install OpenClaw with one click, auto-diagnose configurations, troubleshoot issues, and fix errors. 8 tools + 4 modes + interactive Q&A — easy to manage for beginners and experts alike.
|
||||
|
||||
> 🌐 **Website**: [claw.qt.cool](https://claw.qt.cool/) | 📦 **Download**: [GitHub Releases](https://github.com/qingchencloud/clawpanel/releases/latest)
|
||||
|
||||
## Features
|
||||
### 🎁 QingchenCloud AI API
|
||||
|
||||
### Dashboard & Monitoring
|
||||
- **Real-time Dashboard** — Gateway status, version info, agent fleet, model pool, service health at a glance
|
||||
- **Log Viewer** — Real-time Gateway logs with search and filtering
|
||||
- **System Diagnostics** — Auto-detect configuration issues, WebSocket connectivity, pairing status
|
||||
> Internal technical testing platform, open for selected users. Sign in daily to earn credits.
|
||||
|
||||
### AI Assistant (Built-in)
|
||||
- **8 Built-in Tools** — Terminal execution, file read/write, directory browsing, web search, URL fetching, system info, process management, port checking
|
||||
- **4 Modes** — Full auto, semi-auto, read-only, chat-only
|
||||
- **Tool Calling** — AI can directly execute commands, read logs, modify configs to diagnose and fix problems
|
||||
- **QingchenCloud Integration** — Free partial model access for panel users, premium models at 2-3x discount for paid users
|
||||
<p align="center">
|
||||
<a href="https://gpt.qt.cool"><img src="https://img.shields.io/badge/🔑 QingchenCloud AI-gpt.qt.cool-6366f1?style=for-the-badge" alt="QingchenCloud AI"></a>
|
||||
</p>
|
||||
|
||||
### Model Configuration
|
||||
- **Multi-Provider** — OpenAI, Anthropic, DeepSeek, Google Gemini, Ollama, SiliconFlow, Volcengine, Alibaba Cloud, and more
|
||||
- **One-click Model Add** — Browse and select models from QingchenCloud catalog
|
||||
- **Model Testing** — Test any model with a single click before deploying
|
||||
- **Primary/Fallback** — Set primary model with automatic fallback to alternatives
|
||||
- **Daily Sign-in Credits** — Sign in daily + invite friends to earn test credits
|
||||
- **OpenAI-Compatible API** — Seamless integration with OpenClaw, plug and play
|
||||
- **Resource Policy** — Rate limiting + request caps, may queue during peak hours
|
||||
- **Model Availability** — Models/APIs subject to actual page display, may rotate versions
|
||||
|
||||
### Agent Management
|
||||
- **Multi-Agent** — Create and manage multiple AI agents with independent workspaces
|
||||
- **Identity & Personality** — Configure name, emoji, model for each agent
|
||||
- **Memory Files** — Manage SOUL.md, IDENTITY.md, AGENTS.md workspace files
|
||||
- **Workspace Isolation** — Each agent has its own memory, tools, and configuration
|
||||
> ⚠️ **Compliance**: This platform is for technical testing only. Illegal use or circumventing security mechanisms is prohibited. Keep your API Key secure. Rules subject to latest platform policies.
|
||||
|
||||
### Messaging Channels
|
||||
- **QQ Bot** — Built-in QQ robot integration via QQ Open Platform
|
||||
- **Telegram** — Bot Token authentication
|
||||
- **Discord** — Bot with guild/channel management
|
||||
- **Feishu/Lark** — Enterprise messaging with WebSocket mode
|
||||
- **DingTalk** — Enterprise app with Stream mode robot
|
||||
- **Multi-Account** — Bind different accounts to different agents
|
||||
|
||||
### Gateway & Services
|
||||
- **Gateway Control** — Start, stop, restart OpenClaw Gateway
|
||||
- **Auto-Guardian** — Automatic Gateway restart on unexpected exit (with cooldown)
|
||||
- **Config Editor** — Direct JSON editor for openclaw.json with syntax validation
|
||||
- **Backup & Restore** — One-click configuration backup and restore
|
||||
|
||||
### Cron Jobs
|
||||
- **Scheduled Tasks** — Create cron-based scheduled AI tasks
|
||||
- **Delivery Channels** — Route task results to messaging channels
|
||||
- **Per-Agent Assignment** — Assign tasks to specific agents
|
||||
|
||||
### Security
|
||||
- **Access Password** — Protect Web panel with password authentication
|
||||
- **Network Proxy** — Configure HTTP/SOCKS proxy for all outbound requests
|
||||
- **Session Management** — Secure session tokens with expiration
|
||||
|
||||
## Installation
|
||||
|
||||
### Desktop App (Windows / macOS / Linux)
|
||||
|
||||
Download the latest installer from [GitHub Releases](https://github.com/qingchencloud/clawpanel/releases/latest):
|
||||
|
||||
| Platform | Download |
|
||||
|----------|----------|
|
||||
| **Windows** | `.exe` installer (recommended) or `.msi` |
|
||||
| **macOS Apple Silicon** | `.dmg` (aarch64) |
|
||||
| **macOS Intel** | `.dmg` (x64) |
|
||||
| **Linux** | `.AppImage` / `.deb` / `.rpm` |
|
||||
|
||||
### Web Version (No Rust/Tauri Required)
|
||||
|
||||
For headless servers, Raspberry Pi, ARM boards, or Docker:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/qingchencloud/clawpanel.git
|
||||
cd clawpanel
|
||||
npm install
|
||||
npm run serve
|
||||
# Open http://localhost:1420 in your browser
|
||||
```
|
||||
|
||||
### ARM / Embedded Device Support
|
||||
### 🔥 Dev Board / Embedded Device Support
|
||||
|
||||
ClawPanel provides a **pure Web deployment mode** (zero GUI dependency), natively compatible with ARM64 boards:
|
||||
|
||||
@@ -118,45 +59,157 @@ ClawPanel provides a **pure Web deployment mode** (zero GUI dependency), nativel
|
||||
- **Armbian / Debian / Ubuntu Server** — Auto-detect architecture
|
||||
- No Rust / Tauri / GUI needed — **only Node.js 18+ required**
|
||||
|
||||
## Quick Start
|
||||
> 📖 See [Armbian Deployment Guide](docs/armbian-deploy.md) | [Web Dev Mode](#web-version-no-rusttauri-required)
|
||||
|
||||
1. Install and open ClawPanel
|
||||
2. First run auto-detects Node.js environment and OpenClaw CLI
|
||||
3. If OpenClaw is not installed, click one-click install (R2 CDN accelerated)
|
||||
4. After installation, the dashboard loads automatically
|
||||
## Community
|
||||
|
||||
> **Requirements**: Node.js 18+ (22 LTS recommended)
|
||||
A community of passionate AI Agent developers and enthusiasts — join us!
|
||||
|
||||
## Tech Stack
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/U9AttmsNHh"><strong>Discord</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/discussions"><strong>Discussions</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/issues/new"><strong>Report Issue</strong></a>
|
||||
</p>
|
||||
|
||||
- **Frontend**: Vanilla JS + CSS Custom Properties (zero framework dependency)
|
||||
- **Desktop**: Tauri v2 (Rust backend)
|
||||
- **Web Backend**: Node.js (Express-compatible API server)
|
||||
- **Build**: Vite
|
||||
- **CI/CD**: GitHub Actions (cross-platform builds)
|
||||
## Features
|
||||
|
||||
## Development
|
||||
- **🤖 AI Assistant (New)** — Built-in AI assistant, 4 modes + 8 tools + interactive Q&A. See [AI Assistant Highlights](#-ai-assistant-highlights)
|
||||
- **🖼️ Image Recognition** — Paste screenshots or drag images, AI auto-analyzes, multimodal conversations
|
||||
- **Dashboard** — System overview, real-time service monitoring, quick actions
|
||||
- **Service Management** — OpenClaw start/stop, version detection & one-click upgrade, Gateway install/uninstall, config backup & restore
|
||||
- **Model Configuration** — Multi-provider management, model CRUD, batch connectivity tests, latency detection, drag-to-reorder, auto-save + undo
|
||||
- **Gateway Configuration** — Port, access scope (localhost/LAN), auth Token, Tailscale networking
|
||||
- **Messaging Channels** — Unified Telegram, Discord, Feishu, DingTalk, QQ management, multi-Agent binding per platform
|
||||
- **Communication & Automation** — Message settings, broadcast strategies, slash commands, Webhooks, execution approval
|
||||
- **Usage Analytics** — Token usage, API costs, model/provider/tool rankings, daily usage charts
|
||||
- **Agent Management** — Agent CRUD, identity editing, model config, workspace management
|
||||
- **Chat** — Streaming, Markdown rendering, session management, /fast /think /verbose /reasoning commands
|
||||
- **Cron Jobs** — Cron-based scheduled execution, multi-channel delivery
|
||||
- **Log Viewer** — Multi-source real-time logs with keyword search
|
||||
- **Memory Management** — Memory file view/edit, categorized management, ZIP export, Agent switching
|
||||
- **QingchenCloud AI API** — Internal testing platform, OpenAI-compatible, daily sign-in credits
|
||||
- **Extensions** — cftunnel tunnel management, ClawApp status monitoring
|
||||
- **About** — Version info, community links, related projects, one-click upgrade
|
||||
|
||||
## Download & Install
|
||||
|
||||
Go to [Releases](https://github.com/qingchencloud/clawpanel/releases/latest) for the latest version:
|
||||
|
||||
### macOS
|
||||
|
||||
| Chip | Installer | Notes |
|
||||
|------|-----------|-------|
|
||||
| Apple Silicon (M1/M2/M3/M4) | `ClawPanel_x.x.x_aarch64.dmg` | Macs from late 2020+ |
|
||||
| Intel | `ClawPanel_x.x.x_x64.dmg` | Macs 2020 and earlier |
|
||||
|
||||
> **⚠️ "Damaged" or "unverified developer"?** App is unsigned. Run: `sudo xattr -rd com.apple.quarantine /Applications/ClawPanel.app`
|
||||
|
||||
### Windows
|
||||
|
||||
| Format | Installer | Notes |
|
||||
|--------|-----------|-------|
|
||||
| EXE | `ClawPanel_x.x.x_x64-setup.exe` | Recommended |
|
||||
| MSI | `ClawPanel_x.x.x_x64_en-US.msi` | Enterprise / silent install |
|
||||
|
||||
### Linux
|
||||
|
||||
| Format | Installer | Notes |
|
||||
|--------|-----------|-------|
|
||||
| AppImage | `ClawPanel_x.x.x_amd64.AppImage` | No install, `chmod +x` and run |
|
||||
| DEB | `ClawPanel_x.x.x_amd64.deb` | `sudo dpkg -i *.deb` |
|
||||
| RPM | `ClawPanel-x.x.x-1.x86_64.rpm` | `sudo rpm -i *.rpm` |
|
||||
|
||||
### Linux Server (Web Version)
|
||||
|
||||
```bash
|
||||
# Prerequisites: Node.js 22+, Rust toolchain, Tauri CLI
|
||||
|
||||
# Clone
|
||||
git clone https://github.com/qingchencloud/clawpanel.git
|
||||
cd clawpanel
|
||||
|
||||
# Install dependencies
|
||||
npm install
|
||||
|
||||
# Desktop development (Tauri)
|
||||
npm run tauri dev
|
||||
|
||||
# Web-only development
|
||||
npm run serve
|
||||
curl -fsSL https://raw.githubusercontent.com/qingchencloud/clawpanel/main/scripts/linux-deploy.sh | bash
|
||||
```
|
||||
|
||||
Visit `http://YOUR_SERVER_IP:1420` after deployment. 📖 [Linux Deployment Guide](docs/linux-deploy.md)
|
||||
|
||||
### Docker
|
||||
|
||||
```bash
|
||||
docker run -d --name clawpanel --restart unless-stopped \
|
||||
-p 1420:1420 -v clawpanel-data:/root/.openclaw \
|
||||
node:22-slim \
|
||||
sh -c "apt-get update && apt-get install -y git && \
|
||||
npm install -g @qingchencloud/openclaw-zh --registry https://registry.npmmirror.com && \
|
||||
git clone https://github.com/qingchencloud/clawpanel.git /app && \
|
||||
cd /app && npm install && npm run build && npm run serve"
|
||||
```
|
||||
|
||||
📖 [Docker Deployment Guide](docs/docker-deploy.md)
|
||||
|
||||
## Quick Start
|
||||
|
||||
1. **Initial Setup** — First launch auto-detects Node.js, Git, OpenClaw. One-click install if missing.
|
||||
2. **Configure Models** — Add AI providers (DeepSeek, OpenAI, Ollama, etc.) with API keys. Test connectivity.
|
||||
3. **Start Gateway** — Go to Service Management, click Start. Green status = ready.
|
||||
4. **Start Chatting** — Go to Live Chat, select model, start conversation with streaming & Markdown.
|
||||
|
||||
## 🤖 AI Assistant Highlights
|
||||
|
||||
Built-in AI assistant that can **directly operate your system** — diagnose, fix, even submit PRs.
|
||||
|
||||
### Four Modes
|
||||
|
||||
| Mode | Icon | Tools | Write | Confirm | Use Case |
|
||||
|------|------|-------|-------|---------|----------|
|
||||
| **Chat** | 💬 | ❌ | ❌ | — | Pure Q&A |
|
||||
| **Plan** | 📋 | ✅ | ❌ | ✅ | Read configs/logs, output plans |
|
||||
| **Execute** | ⚡ | ✅ | ✅ | ✅ | Normal work, dangerous ops need confirm |
|
||||
| **Unlimited** | ∞ | ✅ | ✅ | ❌ | Full auto, no prompts |
|
||||
|
||||
### Eight Tools
|
||||
|
||||
| Tool | Function |
|
||||
|------|----------|
|
||||
| `ask_user` | Ask user questions (single/multi/text) |
|
||||
| `get_system_info` | Get OS, architecture, home directory |
|
||||
| `run_command` | Execute shell commands |
|
||||
| `read_file` / `write_file` | Read/write files |
|
||||
| `list_directory` | Browse directories |
|
||||
| `list_processes` | View processes |
|
||||
| `check_port` | Check port usage |
|
||||
|
||||
## Tech Architecture
|
||||
|
||||
| Layer | Technology | Description |
|
||||
|-------|-----------|-------------|
|
||||
| Frontend | Vanilla JS + Vite | Zero framework, lightweight |
|
||||
| Backend | Rust + Tauri v2 | Native performance, cross-platform |
|
||||
| Communication | Tauri IPC + Shell Plugin | Frontend-backend bridge |
|
||||
| Styling | Pure CSS (CSS Variables) | Dark/Light themes, glassmorphism |
|
||||
|
||||
## Build from Source
|
||||
|
||||
```bash
|
||||
git clone https://github.com/qingchencloud/clawpanel.git
|
||||
cd clawpanel && npm install
|
||||
|
||||
# Desktop (requires Rust + Tauri v2)
|
||||
npm run tauri dev # Development
|
||||
npm run tauri build # Production
|
||||
|
||||
# Web only (no Rust needed)
|
||||
npm run dev # Dev with hot reload
|
||||
npm run build && npm run serve # Production
|
||||
```
|
||||
|
||||
## Related Projects
|
||||
|
||||
| Project | Description |
|
||||
|---------|-------------|
|
||||
| [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslation) | AI Agent Framework |
|
||||
| [ClawApp](https://github.com/qingchencloud/clawapp) | Cross-platform mobile chat client |
|
||||
| [cftunnel](https://github.com/qingchencloud/cftunnel) | Cloudflare Tunnel tool |
|
||||
|
||||
## Contributing
|
||||
|
||||
Issues and Pull Requests are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines.
|
||||
Issues and Pull Requests are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
||||
|
||||
## Acknowledgements
|
||||
|
||||
|
||||
165
README.es.md
Normal file
165
README.es.md
Normal file
@@ -0,0 +1,165 @@
|
||||
<p align="center">
|
||||
<img src="public/images/logo-brand.png" width="360" alt="ClawPanel">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
Panel de gestión OpenClaw con Asistente IA integrado — Instalación, Configuración, Diagnóstico y Reparación con un clic
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="README.md">🇨🇳 中文</a> | <a href="README.en.md">🇺🇸 English</a> | <a href="README.zh-TW.md">🇹🇼 繁體中文</a> | <a href="README.ja.md">🇯🇵 日本語</a> | <a href="README.ko.md">🇰🇷 한국어</a> | <a href="README.vi.md">🇻🇳 Tiếng Việt</a> | <strong>🇪🇸 Español</strong> | <a href="README.pt.md">🇧🇷 Português</a> | <a href="README.ru.md">🇷🇺 Русский</a> | <a href="README.fr.md">🇫🇷 Français</a> | <a href="README.de.md">🇩🇪 Deutsch</a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/qingchencloud/clawpanel/releases/latest">
|
||||
<img src="https://img.shields.io/github/v/release/qingchencloud/clawpanel?style=flat-square&color=6366f1" alt="Release">
|
||||
</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/releases/latest">
|
||||
<img src="https://img.shields.io/github/downloads/qingchencloud/clawpanel/total?style=flat-square&color=8b5cf6" alt="Downloads">
|
||||
</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/blob/main/LICENSE">
|
||||
<img src="https://img.shields.io/badge/license-AGPL--3.0-blue.svg?style=flat-square" alt="License">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
<p align="center">
|
||||
<img src="docs/feature-showcase.gif" width="800" alt="ClawPanel Showcase">
|
||||
</p>
|
||||
|
||||
ClawPanel es un panel de gestión visual para el framework de AI Agent [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslation). Cuenta con un **asistente IA inteligente integrado** que te ayuda a instalar OpenClaw con un clic, diagnosticar configuraciones automáticamente, solucionar problemas y corregir errores. 8 herramientas + 4 modos + Q&A interactivo — fácil de gestionar para principiantes y expertos.
|
||||
|
||||
> 🌐 **Sitio web**: [claw.qt.cool](https://claw.qt.cool/) | 📦 **Descargar**: [GitHub Releases](https://github.com/qingchencloud/clawpanel/releases/latest)
|
||||
|
||||
### 🎁 QingchenCloud AI API
|
||||
|
||||
> Plataforma interna de pruebas técnicas, abierta para usuarios seleccionados. Inicia sesión diariamente para obtener créditos.
|
||||
|
||||
<p align="center">
|
||||
<a href="https://gpt.qt.cool"><img src="https://img.shields.io/badge/🔑 QingchenCloud AI-gpt.qt.cool-6366f1?style=for-the-badge" alt="QingchenCloud AI"></a>
|
||||
</p>
|
||||
|
||||
- **Créditos por inicio de sesión diario** — Inicia sesión + invita amigos para obtener créditos de prueba
|
||||
- **API compatible con OpenAI** — Integración perfecta con OpenClaw
|
||||
- **Política de recursos** — Límite de velocidad + límite de solicitudes, posible cola en horas pico
|
||||
- **Disponibilidad de modelos** — Modelos/APIs según la página actual, posible rotación de versiones
|
||||
|
||||
> ⚠️ **Cumplimiento**: Solo para pruebas técnicas. Prohibido el uso ilegal o eludir mecanismos de seguridad. Mantén tu API Key segura. Las reglas están sujetas a las últimas políticas de la plataforma.
|
||||
|
||||
### 🔥 Soporte para placas de desarrollo / Dispositivos embebidos
|
||||
|
||||
- **Orange Pi / Raspberry Pi / RK3588** — `npm run serve` para ejecutar
|
||||
- **Docker ARM64** — `docker run ghcr.io/qingchencloud/openclaw:latest`
|
||||
- **Armbian / Debian / Ubuntu Server** — Detección automática de arquitectura
|
||||
- Sin necesidad de Rust / Tauri / GUI — **solo Node.js 18+**
|
||||
|
||||
## Comunidad
|
||||
|
||||
Una comunidad de desarrolladores y entusiastas apasionados por los AI Agents — ¡únete!
|
||||
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/U9AttmsNHh"><strong>Discord</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/discussions"><strong>Discussions</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/issues/new"><strong>Reportar Issue</strong></a>
|
||||
</p>
|
||||
|
||||
## Características
|
||||
|
||||
- **🤖 Asistente IA (Nuevo)** — Asistente IA integrado, 4 modos + 8 herramientas + Q&A interactivo
|
||||
- **🖼️ Reconocimiento de imágenes** — Pega capturas o arrastra imágenes, IA analiza automáticamente
|
||||
- **Panel** — Vista general del sistema, monitoreo de servicios en tiempo real
|
||||
- **Gestión de servicios** — Inicio/parada de OpenClaw, detección de versión y actualización con un clic
|
||||
- **Configuración de modelos** — Gestión multi-proveedor, pruebas de conectividad por lotes, ordenar arrastrando
|
||||
- **Configuración de Gateway** — Puerto, alcance de acceso, Token de autenticación, Tailscale
|
||||
- **Canales de mensajería** — Gestión unificada de Telegram, Discord, Feishu, DingTalk, QQ
|
||||
- **Comunicación y automatización** — Configuración de mensajes, difusión, Webhooks, aprobación de ejecución
|
||||
- **Análisis de uso** — Uso de tokens, costos API, rankings de modelos/proveedores
|
||||
- **Gestión de Agents** — CRUD de Agents, edición de identidad, gestión de workspace
|
||||
- **Chat** — Streaming, renderizado Markdown, gestión de sesiones
|
||||
- **Tareas programadas** — Ejecución programada con Cron, entrega multicanal
|
||||
- **Visor de logs** — Logs en tiempo real multi-fuente y búsqueda por palabras clave
|
||||
- **Gestión de memoria** — Ver/editar archivos de memoria, exportar ZIP, cambiar Agent
|
||||
- **QingchenCloud AI API** — Plataforma de pruebas interna, compatible con OpenAI
|
||||
- **Herramientas de extensión** — Gestión de túneles cftunnel, monitoreo de ClawApp
|
||||
- **Acerca de** — Información de versión, enlaces de comunidad, proyectos relacionados
|
||||
|
||||
## Descargar e instalar
|
||||
|
||||
Visita [Releases](https://github.com/qingchencloud/clawpanel/releases/latest) para la última versión:
|
||||
|
||||
| Plataforma | Instalador |
|
||||
|-----------|-----------|
|
||||
| **Windows** | `.exe` (recomendado) o `.msi` |
|
||||
| **macOS Apple Silicon** | `.dmg` (aarch64) |
|
||||
| **macOS Intel** | `.dmg` (x64) |
|
||||
| **Linux** | `.AppImage` / `.deb` / `.rpm` |
|
||||
|
||||
### Servidor Linux (Versión Web)
|
||||
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/qingchencloud/clawpanel/main/scripts/linux-deploy.sh | bash
|
||||
```
|
||||
|
||||
### Docker
|
||||
|
||||
```bash
|
||||
docker run -d --name clawpanel --restart unless-stopped \
|
||||
-p 1420:1420 -v clawpanel-data:/root/.openclaw \
|
||||
node:22-slim \
|
||||
sh -c "apt-get update && apt-get install -y git && \
|
||||
npm install -g @qingchencloud/openclaw-zh --registry https://registry.npmmirror.com && \
|
||||
git clone https://github.com/qingchencloud/clawpanel.git /app && \
|
||||
cd /app && npm install && npm run build && npm run serve"
|
||||
```
|
||||
|
||||
## Inicio rápido
|
||||
|
||||
1. **Configuración inicial** — Primera ejecución detecta automáticamente Node.js, Git, OpenClaw. Instalación con un clic si falta
|
||||
2. **Configurar modelos** — Añadir proveedores de IA (DeepSeek, OpenAI, Ollama, etc.) y probar conectividad
|
||||
3. **Iniciar Gateway** — Ir a Gestión de servicios, clic en "Iniciar". Estado verde = listo
|
||||
4. **Empezar a chatear** — Ir a Chat en vivo, seleccionar modelo y comenzar conversación
|
||||
|
||||
## Arquitectura técnica
|
||||
|
||||
| Capa | Tecnología | Descripción |
|
||||
|------|-----------|-------------|
|
||||
| Frontend | Vanilla JS + Vite | Sin framework, ligero |
|
||||
| Backend | Rust + Tauri v2 | Rendimiento nativo, multiplataforma |
|
||||
| Comunicación | Tauri IPC + Shell Plugin | Puente frontend-backend |
|
||||
| Estilos | Pure CSS (CSS Variables) | Temas oscuro/claro |
|
||||
|
||||
## Compilar desde código fuente
|
||||
|
||||
```bash
|
||||
git clone https://github.com/qingchencloud/clawpanel.git
|
||||
cd clawpanel && npm install
|
||||
|
||||
# Escritorio (requiere Rust + Tauri v2)
|
||||
npm run tauri dev # Desarrollo
|
||||
npm run tauri build # Producción
|
||||
|
||||
# Solo Web (sin Rust)
|
||||
npm run dev # Hot reload
|
||||
npm run build && npm run serve # Producción
|
||||
```
|
||||
|
||||
## Proyectos relacionados
|
||||
|
||||
| Proyecto | Descripción |
|
||||
|----------|-------------|
|
||||
| [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslation) | Framework AI Agent |
|
||||
| [ClawApp](https://github.com/qingchencloud/clawapp) | Cliente móvil multiplataforma |
|
||||
| [cftunnel](https://github.com/qingchencloud/cftunnel) | Herramienta Cloudflare Tunnel |
|
||||
|
||||
## Contribuir
|
||||
|
||||
Issues y Pull Requests son bienvenidos. Ver [CONTRIBUTING.md](CONTRIBUTING.md).
|
||||
|
||||
## Licencia
|
||||
|
||||
[AGPL-3.0](LICENSE). Contactar para licencia comercial.
|
||||
|
||||
© 2026 QingchenCloud | [claw.qt.cool](https://claw.qt.cool)
|
||||
165
README.fr.md
Normal file
165
README.fr.md
Normal file
@@ -0,0 +1,165 @@
|
||||
<p align="center">
|
||||
<img src="public/images/logo-brand.png" width="360" alt="ClawPanel">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
Panneau de gestion OpenClaw avec Assistant IA intégré — Installation, Configuration, Diagnostic et Réparation en un clic
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="README.md">🇨🇳 中文</a> | <a href="README.en.md">🇺🇸 English</a> | <a href="README.zh-TW.md">🇹🇼 繁體中文</a> | <a href="README.ja.md">🇯🇵 日本語</a> | <a href="README.ko.md">🇰🇷 한국어</a> | <a href="README.vi.md">🇻🇳 Tiếng Việt</a> | <a href="README.es.md">🇪🇸 Español</a> | <a href="README.pt.md">🇧🇷 Português</a> | <a href="README.ru.md">🇷🇺 Русский</a> | <strong>🇫🇷 Français</strong> | <a href="README.de.md">🇩🇪 Deutsch</a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/qingchencloud/clawpanel/releases/latest">
|
||||
<img src="https://img.shields.io/github/v/release/qingchencloud/clawpanel?style=flat-square&color=6366f1" alt="Release">
|
||||
</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/releases/latest">
|
||||
<img src="https://img.shields.io/github/downloads/qingchencloud/clawpanel/total?style=flat-square&color=8b5cf6" alt="Downloads">
|
||||
</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/blob/main/LICENSE">
|
||||
<img src="https://img.shields.io/badge/license-AGPL--3.0-blue.svg?style=flat-square" alt="License">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
<p align="center">
|
||||
<img src="docs/feature-showcase.gif" width="800" alt="ClawPanel Showcase">
|
||||
</p>
|
||||
|
||||
ClawPanel est un panneau de gestion visuel pour le framework d'agents IA [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslation). Il intègre un **assistant IA intelligent** qui vous aide à installer OpenClaw en un clic, diagnostiquer automatiquement les configurations, résoudre les problèmes et corriger les erreurs. 8 outils + 4 modes + Q&A interactif — facile à gérer pour débutants et experts.
|
||||
|
||||
> 🌐 **Site web** : [claw.qt.cool](https://claw.qt.cool/) | 📦 **Télécharger** : [GitHub Releases](https://github.com/qingchencloud/clawpanel/releases/latest)
|
||||
|
||||
### 🎁 QingchenCloud AI API
|
||||
|
||||
> Plateforme interne de tests techniques, ouverte à certains utilisateurs. Connectez-vous quotidiennement pour gagner des crédits.
|
||||
|
||||
<p align="center">
|
||||
<a href="https://gpt.qt.cool"><img src="https://img.shields.io/badge/🔑 QingchenCloud AI-gpt.qt.cool-6366f1?style=for-the-badge" alt="QingchenCloud AI"></a>
|
||||
</p>
|
||||
|
||||
- **Crédits de connexion quotidienne** — Connexion quotidienne + invitation d'amis pour gagner des crédits de test
|
||||
- **API compatible OpenAI** — Intégration transparente avec OpenClaw
|
||||
- **Politique de ressources** — Limitation de débit + plafond de requêtes, file d'attente possible aux heures de pointe
|
||||
- **Disponibilité des modèles** — Modèles/APIs selon l'affichage réel de la page, rotation de versions possible
|
||||
|
||||
> ⚠️ **Conformité** : Uniquement pour les tests techniques. L'utilisation illégale ou le contournement des mécanismes de sécurité sont interdits. Gardez votre API Key en sécurité. Les règles sont soumises aux dernières politiques de la plateforme.
|
||||
|
||||
### 🔥 Support cartes de développement / Appareils embarqués
|
||||
|
||||
- **Orange Pi / Raspberry Pi / RK3588** — `npm run serve` pour exécuter
|
||||
- **Docker ARM64** — `docker run ghcr.io/qingchencloud/openclaw:latest`
|
||||
- **Armbian / Debian / Ubuntu Server** — Détection automatique d'architecture
|
||||
- Sans Rust / Tauri / GUI — **seulement Node.js 18+**
|
||||
|
||||
## Communauté
|
||||
|
||||
Une communauté de développeurs et d'enthousiastes passionnés par les agents IA — rejoignez-nous !
|
||||
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/U9AttmsNHh"><strong>Discord</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/discussions"><strong>Discussions</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/issues/new"><strong>Signaler un Issue</strong></a>
|
||||
</p>
|
||||
|
||||
## Fonctionnalités
|
||||
|
||||
- **🤖 Assistant IA (Nouveau)** — Assistant IA intégré, 4 modes + 8 outils + Q&A interactif
|
||||
- **🖼️ Reconnaissance d'images** — Collez des captures d'écran ou glissez des images, l'IA analyse automatiquement
|
||||
- **Tableau de bord** — Vue d'ensemble du système, surveillance des services en temps réel
|
||||
- **Gestion des services** — Démarrage/arrêt d'OpenClaw, détection de version et mise à jour en un clic
|
||||
- **Configuration des modèles** — Gestion multi-fournisseurs, tests de connectivité par lots, tri par glisser-déposer
|
||||
- **Configuration du Gateway** — Port, portée d'accès, Token d'authentification, Tailscale
|
||||
- **Canaux de messagerie** — Gestion unifiée de Telegram, Discord, Feishu, DingTalk, QQ
|
||||
- **Communication et automatisation** — Paramètres de messages, diffusion, Webhooks, approbation d'exécution
|
||||
- **Analyse d'utilisation** — Utilisation des tokens, coûts API, classements modèles/fournisseurs
|
||||
- **Gestion des Agents** — CRUD des Agents, édition d'identité, gestion du workspace
|
||||
- **Chat** — Streaming, rendu Markdown, gestion des sessions
|
||||
- **Tâches planifiées** — Exécution planifiée par Cron, livraison multicanal
|
||||
- **Visionneuse de logs** — Logs en temps réel multi-sources et recherche par mots-clés
|
||||
- **Gestion de la mémoire** — Voir/éditer les fichiers mémoire, export ZIP, changement d'Agent
|
||||
- **QingchenCloud AI API** — Plateforme de tests interne, compatible OpenAI
|
||||
- **Outils d'extension** — Gestion de tunnels cftunnel, surveillance ClawApp
|
||||
- **À propos** — Informations de version, liens communautaires, projets associés
|
||||
|
||||
## Télécharger et installer
|
||||
|
||||
Rendez-vous sur [Releases](https://github.com/qingchencloud/clawpanel/releases/latest) pour la dernière version :
|
||||
|
||||
| Plateforme | Installateur |
|
||||
|-----------|-------------|
|
||||
| **Windows** | `.exe` (recommandé) ou `.msi` |
|
||||
| **macOS Apple Silicon** | `.dmg` (aarch64) |
|
||||
| **macOS Intel** | `.dmg` (x64) |
|
||||
| **Linux** | `.AppImage` / `.deb` / `.rpm` |
|
||||
|
||||
### Serveur Linux (Version Web)
|
||||
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/qingchencloud/clawpanel/main/scripts/linux-deploy.sh | bash
|
||||
```
|
||||
|
||||
### Docker
|
||||
|
||||
```bash
|
||||
docker run -d --name clawpanel --restart unless-stopped \
|
||||
-p 1420:1420 -v clawpanel-data:/root/.openclaw \
|
||||
node:22-slim \
|
||||
sh -c "apt-get update && apt-get install -y git && \
|
||||
npm install -g @qingchencloud/openclaw-zh --registry https://registry.npmmirror.com && \
|
||||
git clone https://github.com/qingchencloud/clawpanel.git /app && \
|
||||
cd /app && npm install && npm run build && npm run serve"
|
||||
```
|
||||
|
||||
## Démarrage rapide
|
||||
|
||||
1. **Configuration initiale** — Le premier lancement détecte automatiquement Node.js, Git, OpenClaw. Installation en un clic si nécessaire
|
||||
2. **Configurer les modèles** — Ajouter des fournisseurs d'IA (DeepSeek, OpenAI, Ollama, etc.) et tester la connectivité
|
||||
3. **Démarrer le Gateway** — Aller dans Gestion des services, cliquer sur « Démarrer ». Statut vert = prêt
|
||||
4. **Commencer à discuter** — Aller dans Chat en direct, sélectionner un modèle et commencer la conversation
|
||||
|
||||
## Architecture technique
|
||||
|
||||
| Couche | Technologie | Description |
|
||||
|--------|-----------|-------------|
|
||||
| Frontend | Vanilla JS + Vite | Sans framework, léger |
|
||||
| Backend | Rust + Tauri v2 | Performance native, multiplateforme |
|
||||
| Communication | Tauri IPC + Shell Plugin | Pont frontend-backend |
|
||||
| Styles | Pure CSS (CSS Variables) | Thèmes sombre/clair |
|
||||
|
||||
## Compiler depuis les sources
|
||||
|
||||
```bash
|
||||
git clone https://github.com/qingchencloud/clawpanel.git
|
||||
cd clawpanel && npm install
|
||||
|
||||
# Bureau (nécessite Rust + Tauri v2)
|
||||
npm run tauri dev # Développement
|
||||
npm run tauri build # Production
|
||||
|
||||
# Web uniquement (sans Rust)
|
||||
npm run dev # Hot reload
|
||||
npm run build && npm run serve # Production
|
||||
```
|
||||
|
||||
## Projets associés
|
||||
|
||||
| Projet | Description |
|
||||
|--------|-------------|
|
||||
| [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslation) | Framework d'agents IA |
|
||||
| [ClawApp](https://github.com/qingchencloud/clawapp) | Client mobile multiplateforme |
|
||||
| [cftunnel](https://github.com/qingchencloud/cftunnel) | Outil Cloudflare Tunnel |
|
||||
|
||||
## Contribuer
|
||||
|
||||
Les Issues et Pull Requests sont les bienvenus. Voir [CONTRIBUTING.md](CONTRIBUTING.md).
|
||||
|
||||
## Licence
|
||||
|
||||
[AGPL-3.0](LICENSE). Contactez-nous pour une licence commerciale.
|
||||
|
||||
© 2026 QingchenCloud | [claw.qt.cool](https://claw.qt.cool)
|
||||
190
README.ja.md
Normal file
190
README.ja.md
Normal file
@@ -0,0 +1,190 @@
|
||||
<p align="center">
|
||||
<img src="public/images/logo-brand.png" width="360" alt="ClawPanel">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
AI アシスタント内蔵の OpenClaw 管理パネル — ワンクリックでインストール、設定、診断、修復
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="README.md">🇨🇳 中文</a> | <a href="README.en.md">🇺🇸 English</a> | <a href="README.zh-TW.md">🇹🇼 繁體中文</a> | <strong>🇯🇵 日本語</strong> | <a href="README.ko.md">🇰🇷 한국어</a> | <a href="README.vi.md">🇻🇳 Tiếng Việt</a> | <a href="README.es.md">🇪🇸 Español</a> | <a href="README.pt.md">🇧🇷 Português</a> | <a href="README.ru.md">🇷🇺 Русский</a> | <a href="README.fr.md">🇫🇷 Français</a> | <a href="README.de.md">🇩🇪 Deutsch</a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/qingchencloud/clawpanel/releases/latest">
|
||||
<img src="https://img.shields.io/github/v/release/qingchencloud/clawpanel?style=flat-square&color=6366f1" alt="Release">
|
||||
</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/releases/latest">
|
||||
<img src="https://img.shields.io/github/downloads/qingchencloud/clawpanel/total?style=flat-square&color=8b5cf6" alt="Downloads">
|
||||
</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/blob/main/LICENSE">
|
||||
<img src="https://img.shields.io/badge/license-AGPL--3.0-blue.svg?style=flat-square" alt="License">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
<p align="center">
|
||||
<img src="docs/feature-showcase.gif" width="800" alt="ClawPanel 機能ショーケース">
|
||||
</p>
|
||||
|
||||
ClawPanel は [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslation) AI Agent フレームワークのビジュアル管理パネルです。**インテリジェント AI アシスタントを内蔵**し、OpenClaw のワンクリックインストール、設定の自動診断、問題の特定と修復をサポートします。8 つのツール + 4 つのモード + インタラクティブ Q&A で、初心者からエキスパートまで簡単に管理できます。
|
||||
|
||||
> 🌐 **ウェブサイト**: [claw.qt.cool](https://claw.qt.cool/) | 📦 **ダウンロード**: [GitHub Releases](https://github.com/qingchencloud/clawpanel/releases/latest)
|
||||
|
||||
### 🎁 晴辰クラウド AI API
|
||||
|
||||
> 内部技術テストプラットフォーム、一部のユーザーに開放。毎日サインインでクレジット獲得。
|
||||
|
||||
<p align="center">
|
||||
<a href="https://gpt.qt.cool"><img src="https://img.shields.io/badge/🔑 QingchenCloud AI-gpt.qt.cool-6366f1?style=for-the-badge" alt="QingchenCloud AI"></a>
|
||||
</p>
|
||||
|
||||
- **毎日サインインクレジット** — サインイン + 友達招待でテストクレジット獲得
|
||||
- **OpenAI 互換 API** — OpenClaw とシームレスに統合
|
||||
- **リソースポリシー** — レート制限 + リクエスト上限、ピーク時はキュー待ち
|
||||
- **モデル可用性** — モデル/API は実際のページ表示に準拠、バージョン切替の場合あり
|
||||
|
||||
> ⚠️ **コンプライアンス**: 技術テスト専用。違法使用やセキュリティメカニズムの回避は禁止。API Key は安全に管理してください。ルールは最新のプラットフォームポリシーに準拠します。
|
||||
|
||||
### 🔥 開発ボード / 組み込みデバイスサポート
|
||||
|
||||
- **Orange Pi / Raspberry Pi / RK3588** — `npm run serve` で実行
|
||||
- **Docker ARM64** — `docker run ghcr.io/qingchencloud/openclaw:latest`
|
||||
- **Armbian / Debian / Ubuntu Server** — アーキテクチャ自動検出
|
||||
- Rust / Tauri / GUI 不要 — **Node.js 18+ のみで動作**
|
||||
|
||||
## コミュニティ
|
||||
|
||||
AI Agent に情熱を持つ開発者とユーザーのコミュニティ — ぜひご参加ください!
|
||||
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/U9AttmsNHh"><strong>Discord</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/discussions"><strong>Discussions</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/issues/new"><strong>Issue を報告</strong></a>
|
||||
</p>
|
||||
|
||||
## 機能
|
||||
|
||||
- **🤖 AI アシスタント(新機能)** — 内蔵 AI アシスタント、4 モード + 8 ツール + インタラクティブ Q&A
|
||||
- **🖼️ 画像認識** — スクリーンショットの貼り付けや画像のドラッグで AI が自動分析
|
||||
- **ダッシュボード** — システム概要、リアルタイムサービス監視、クイックアクション
|
||||
- **サービス管理** — OpenClaw の起動/停止、バージョン検出とワンクリックアップグレード
|
||||
- **モデル設定** — マルチプロバイダー管理、バッチ接続テスト、ドラッグ並び替え、自動保存
|
||||
- **ゲートウェイ設定** — ポート、アクセス範囲、認証 Token、Tailscale
|
||||
- **メッセージチャンネル** — Telegram、Discord、飛書、DingTalk、QQ の統合管理
|
||||
- **通信と自動化** — メッセージ設定、ブロードキャスト、Webhook、実行承認
|
||||
- **使用状況分析** — Token 使用量、API コスト、モデル/プロバイダーランキング
|
||||
- **Agent 管理** — Agent の CRUD、アイデンティティ編集、ワークスペース管理
|
||||
- **チャット** — ストリーミング、Markdown レンダリング、セッション管理
|
||||
- **定時タスク** — Cron ベースのスケジュール実行、マルチチャンネル配信
|
||||
- **ログビューア** — マルチソースリアルタイムログとキーワード検索
|
||||
- **メモリ管理** — メモリファイルの表示/編集、ZIP エクスポート、Agent 切替
|
||||
- **晴辰クラウド AI API** — 内部テストプラットフォーム、OpenAI 互換
|
||||
- **拡張ツール** — cftunnel トンネル管理、ClawApp ステータス監視
|
||||
- **バージョン情報** — バージョン、コミュニティリンク、関連プロジェクト
|
||||
|
||||
## ダウンロードとインストール
|
||||
|
||||
[Releases](https://github.com/qingchencloud/clawpanel/releases/latest) から最新版をダウンロード:
|
||||
|
||||
| プラットフォーム | インストーラー |
|
||||
|-----------------|---------------|
|
||||
| **Windows** | `.exe` インストーラー(推奨)または `.msi` |
|
||||
| **macOS Apple Silicon** | `.dmg` (aarch64) |
|
||||
| **macOS Intel** | `.dmg` (x64) |
|
||||
| **Linux** | `.AppImage` / `.deb` / `.rpm` |
|
||||
|
||||
### Linux サーバー(Web 版)
|
||||
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/qingchencloud/clawpanel/main/scripts/linux-deploy.sh | bash
|
||||
```
|
||||
|
||||
### Docker
|
||||
|
||||
```bash
|
||||
docker run -d --name clawpanel --restart unless-stopped \
|
||||
-p 1420:1420 -v clawpanel-data:/root/.openclaw \
|
||||
node:22-slim \
|
||||
sh -c "apt-get update && apt-get install -y git && \
|
||||
npm install -g @qingchencloud/openclaw-zh --registry https://registry.npmmirror.com && \
|
||||
git clone https://github.com/qingchencloud/clawpanel.git /app && \
|
||||
cd /app && npm install && npm run build && npm run serve"
|
||||
```
|
||||
|
||||
## クイックスタート
|
||||
|
||||
1. **初期設定** — 初回起動で Node.js、Git、OpenClaw を自動検出。未インストールならワンクリック
|
||||
2. **モデル設定** — AI プロバイダー(DeepSeek、OpenAI、Ollama 等)を追加して接続テスト
|
||||
3. **Gateway 起動** — サービス管理で「起動」をクリック。緑色ステータス = 準備完了
|
||||
4. **チャット開始** — ライブチャットでモデルを選択して会話開始
|
||||
|
||||
## 🤖 AI アシスタントハイライト
|
||||
|
||||
システムを**直接操作**できる AI アシスタント — 診断、修復、PR 提出まで。
|
||||
|
||||
### 4 つのモード
|
||||
|
||||
| モード | ツール | ファイル書込 | 確認 | 用途 |
|
||||
|--------|--------|-------------|------|------|
|
||||
| **チャット** 💬 | ❌ | ❌ | — | 純粋な Q&A |
|
||||
| **計画** 📋 | ✅ | ❌ | ✅ | 設定/ログ読取、計画出力 |
|
||||
| **実行** ⚡ | ✅ | ✅ | ✅ | 通常作業、危険な操作は確認必要 |
|
||||
| **無制限** ∞ | ✅ | ✅ | ❌ | 完全自動 |
|
||||
|
||||
### 8 つのツール
|
||||
|
||||
| ツール | 機能 |
|
||||
|--------|------|
|
||||
| `ask_user` | ユーザーへの質問(単一選択/複数選択/テキスト) |
|
||||
| `get_system_info` | OS、アーキテクチャ、ホームディレクトリ取得 |
|
||||
| `run_command` | シェルコマンド実行 |
|
||||
| `read_file` / `write_file` | ファイル読み書き |
|
||||
| `list_directory` | ディレクトリ閲覧 |
|
||||
| `list_processes` | プロセス表示 |
|
||||
| `check_port` | ポート使用状況確認 |
|
||||
|
||||
## 技術アーキテクチャ
|
||||
|
||||
| レイヤー | 技術 | 説明 |
|
||||
|---------|------|------|
|
||||
| フロントエンド | Vanilla JS + Vite | ゼロフレームワーク、軽量 |
|
||||
| バックエンド | Rust + Tauri v2 | ネイティブ性能、クロスプラットフォーム |
|
||||
| 通信 | Tauri IPC + Shell Plugin | フロントエンド・バックエンドブリッジ |
|
||||
| スタイル | Pure CSS (CSS Variables) | ダーク/ライトテーマ |
|
||||
|
||||
## ソースからビルド
|
||||
|
||||
```bash
|
||||
git clone https://github.com/qingchencloud/clawpanel.git
|
||||
cd clawpanel && npm install
|
||||
|
||||
# デスクトップ(Rust + Tauri v2 必要)
|
||||
npm run tauri dev # 開発
|
||||
npm run tauri build # プロダクション
|
||||
|
||||
# Web のみ(Rust 不要)
|
||||
npm run dev # ホットリロード開発
|
||||
npm run build && npm run serve # プロダクション
|
||||
```
|
||||
|
||||
## 関連プロジェクト
|
||||
|
||||
| プロジェクト | 説明 |
|
||||
|-------------|------|
|
||||
| [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslation) | AI Agent フレームワーク |
|
||||
| [ClawApp](https://github.com/qingchencloud/clawapp) | クロスプラットフォームモバイルチャット |
|
||||
| [cftunnel](https://github.com/qingchencloud/cftunnel) | Cloudflare Tunnel ツール |
|
||||
|
||||
## 貢献
|
||||
|
||||
Issue と Pull Request を歓迎します。[CONTRIBUTING.md](CONTRIBUTING.md) をご覧ください。
|
||||
|
||||
## ライセンス
|
||||
|
||||
[AGPL-3.0](LICENSE) ライセンス。商用利用については商用ライセンスをお問い合わせください。
|
||||
|
||||
© 2026 QingchenCloud | [claw.qt.cool](https://claw.qt.cool)
|
||||
178
README.ko.md
Normal file
178
README.ko.md
Normal file
@@ -0,0 +1,178 @@
|
||||
<p align="center">
|
||||
<img src="public/images/logo-brand.png" width="360" alt="ClawPanel">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
AI 어시스턴트 내장 OpenClaw 관리 패널 — 원클릭 설치, 설정, 진단, 복구
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="README.md">🇨🇳 中文</a> | <a href="README.en.md">🇺🇸 English</a> | <a href="README.zh-TW.md">🇹🇼 繁體中文</a> | <a href="README.ja.md">🇯🇵 日本語</a> | <strong>🇰🇷 한국어</strong> | <a href="README.vi.md">🇻🇳 Tiếng Việt</a> | <a href="README.es.md">🇪🇸 Español</a> | <a href="README.pt.md">🇧🇷 Português</a> | <a href="README.ru.md">🇷🇺 Русский</a> | <a href="README.fr.md">🇫🇷 Français</a> | <a href="README.de.md">🇩🇪 Deutsch</a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/qingchencloud/clawpanel/releases/latest">
|
||||
<img src="https://img.shields.io/github/v/release/qingchencloud/clawpanel?style=flat-square&color=6366f1" alt="Release">
|
||||
</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/releases/latest">
|
||||
<img src="https://img.shields.io/github/downloads/qingchencloud/clawpanel/total?style=flat-square&color=8b5cf6" alt="Downloads">
|
||||
</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/blob/main/LICENSE">
|
||||
<img src="https://img.shields.io/badge/license-AGPL--3.0-blue.svg?style=flat-square" alt="License">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
<p align="center">
|
||||
<img src="docs/feature-showcase.gif" width="800" alt="ClawPanel 기능 쇼케이스">
|
||||
</p>
|
||||
|
||||
ClawPanel은 [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslation) AI Agent 프레임워크의 시각적 관리 패널입니다. **지능형 AI 어시스턴트를 내장**하여 OpenClaw 원클릭 설치, 자동 설정 진단, 문제 해결 및 오류 수정을 지원합니다. 8개 도구 + 4가지 모드 + 대화형 Q&A로 초보자부터 전문가까지 쉽게 관리할 수 있습니다.
|
||||
|
||||
> 🌐 **웹사이트**: [claw.qt.cool](https://claw.qt.cool/) | 📦 **다운로드**: [GitHub Releases](https://github.com/qingchencloud/clawpanel/releases/latest)
|
||||
|
||||
### 🎁 칭천클라우드 AI API
|
||||
|
||||
> 내부 기술 테스트 플랫폼, 일부 사용자에게 개방. 매일 출석하여 크레딧 획득.
|
||||
|
||||
<p align="center">
|
||||
<a href="https://gpt.qt.cool"><img src="https://img.shields.io/badge/🔑 QingchenCloud AI-gpt.qt.cool-6366f1?style=for-the-badge" alt="QingchenCloud AI"></a>
|
||||
</p>
|
||||
|
||||
- **매일 출석 크레딧** — 출석 + 친구 초대로 테스트 크레딧 획득
|
||||
- **OpenAI 호환 API** — OpenClaw와 원활한 통합
|
||||
- **리소스 정책** — 속도 제한 + 요청 상한, 피크 시간대 대기열 가능
|
||||
- **모델 가용성** — 모델/API는 실제 페이지 표시 기준, 버전 전환 가능
|
||||
|
||||
> ⚠️ **준수 사항**: 기술 테스트 전용. 불법 사용이나 보안 메커니즘 우회는 금지됩니다. API Key를 안전하게 관리하세요. 규칙은 최신 플랫폼 정책을 따릅니다.
|
||||
|
||||
### 🔥 개발 보드 / 임베디드 디바이스 지원
|
||||
|
||||
- **Orange Pi / Raspberry Pi / RK3588** — `npm run serve`로 실행
|
||||
- **Docker ARM64** — `docker run ghcr.io/qingchencloud/openclaw:latest`
|
||||
- **Armbian / Debian / Ubuntu Server** — 아키텍처 자동 감지
|
||||
- Rust / Tauri / GUI 불필요 — **Node.js 18+만 있으면 실행 가능**
|
||||
|
||||
## 커뮤니티
|
||||
|
||||
AI Agent에 열정적인 개발자와 사용자 커뮤니티 — 함께하세요!
|
||||
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/U9AttmsNHh"><strong>Discord</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/discussions"><strong>Discussions</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/issues/new"><strong>Issue 보고</strong></a>
|
||||
</p>
|
||||
|
||||
## 기능
|
||||
|
||||
- **🤖 AI 어시스턴트 (신규)** — 내장 AI 어시스턴트, 4가지 모드 + 8개 도구 + 대화형 Q&A
|
||||
- **🖼️ 이미지 인식** — 스크린샷 붙여넣기 또는 이미지 드래그로 AI 자동 분석
|
||||
- **대시보드** — 시스템 개요, 실시간 서비스 모니터링, 빠른 작업
|
||||
- **서비스 관리** — OpenClaw 시작/중지, 버전 감지 및 원클릭 업그레이드
|
||||
- **모델 설정** — 멀티 프로바이더 관리, 배치 연결 테스트, 드래그 정렬, 자동 저장
|
||||
- **게이트웨이 설정** — 포트, 접근 범위, 인증 Token, Tailscale
|
||||
- **메시징 채널** — Telegram, Discord, 飞书, DingTalk, QQ 통합 관리
|
||||
- **통신 및 자동화** — 메시지 설정, 브로드캐스트, Webhook, 실행 승인
|
||||
- **사용량 분석** — Token 사용량, API 비용, 모델/프로바이더 순위
|
||||
- **Agent 관리** — Agent CRUD, 아이덴티티 편집, 워크스페이스 관리
|
||||
- **채팅** — 스트리밍, Markdown 렌더링, 세션 관리
|
||||
- **예약 작업** — Cron 기반 예약 실행, 멀티 채널 배달
|
||||
- **로그 뷰어** — 멀티 소스 실시간 로그 및 키워드 검색
|
||||
- **메모리 관리** — 메모리 파일 보기/편집, ZIP 내보내기, Agent 전환
|
||||
- **칭천클라우드 AI API** — 내부 테스트 플랫폼, OpenAI 호환
|
||||
- **확장 도구** — cftunnel 터널 관리, ClawApp 상태 모니터링
|
||||
- **정보** — 버전 정보, 커뮤니티 링크, 관련 프로젝트
|
||||
|
||||
## 다운로드 및 설치
|
||||
|
||||
[Releases](https://github.com/qingchencloud/clawpanel/releases/latest)에서 최신 버전 다운로드:
|
||||
|
||||
| 플랫폼 | 설치 파일 |
|
||||
|--------|----------|
|
||||
| **Windows** | `.exe` 설치 프로그램 (권장) 또는 `.msi` |
|
||||
| **macOS Apple Silicon** | `.dmg` (aarch64) |
|
||||
| **macOS Intel** | `.dmg` (x64) |
|
||||
| **Linux** | `.AppImage` / `.deb` / `.rpm` |
|
||||
|
||||
### Linux 서버 (Web 버전)
|
||||
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/qingchencloud/clawpanel/main/scripts/linux-deploy.sh | bash
|
||||
```
|
||||
|
||||
### Docker
|
||||
|
||||
```bash
|
||||
docker run -d --name clawpanel --restart unless-stopped \
|
||||
-p 1420:1420 -v clawpanel-data:/root/.openclaw \
|
||||
node:22-slim \
|
||||
sh -c "apt-get update && apt-get install -y git && \
|
||||
npm install -g @qingchencloud/openclaw-zh --registry https://registry.npmmirror.com && \
|
||||
git clone https://github.com/qingchencloud/clawpanel.git /app && \
|
||||
cd /app && npm install && npm run build && npm run serve"
|
||||
```
|
||||
|
||||
## 빠른 시작
|
||||
|
||||
1. **초기 설정** — 첫 실행 시 Node.js, Git, OpenClaw 자동 감지. 미설치 시 원클릭 설치
|
||||
2. **모델 설정** — AI 프로바이더 (DeepSeek, OpenAI, Ollama 등) 추가 및 연결 테스트
|
||||
3. **Gateway 시작** — 서비스 관리에서 「시작」 클릭. 녹색 상태 = 준비 완료
|
||||
4. **채팅 시작** — 실시간 채팅에서 모델 선택 후 대화 시작
|
||||
|
||||
## 🤖 AI 어시스턴트 하이라이트
|
||||
|
||||
시스템을 **직접 조작**할 수 있는 AI 어시스턴트 — 진단, 수정, PR 제출까지.
|
||||
|
||||
### 4가지 모드
|
||||
|
||||
| 모드 | 도구 | 파일 쓰기 | 확인 | 용도 |
|
||||
|------|------|----------|------|------|
|
||||
| **채팅** 💬 | ❌ | ❌ | — | 순수 Q&A |
|
||||
| **계획** 📋 | ✅ | ❌ | ✅ | 설정/로그 읽기, 계획 출력 |
|
||||
| **실행** ⚡ | ✅ | ✅ | ✅ | 일반 작업, 위험 작업은 확인 필요 |
|
||||
| **무제한** ∞ | ✅ | ✅ | ❌ | 완전 자동 |
|
||||
|
||||
## 기술 아키텍처
|
||||
|
||||
| 계층 | 기술 | 설명 |
|
||||
|------|------|------|
|
||||
| 프론트엔드 | Vanilla JS + Vite | 제로 프레임워크, 경량 |
|
||||
| 백엔드 | Rust + Tauri v2 | 네이티브 성능, 크로스 플랫폼 |
|
||||
| 통신 | Tauri IPC + Shell Plugin | 프론트엔드-백엔드 브릿지 |
|
||||
| 스타일 | Pure CSS (CSS Variables) | 다크/라이트 테마 |
|
||||
|
||||
## 소스에서 빌드
|
||||
|
||||
```bash
|
||||
git clone https://github.com/qingchencloud/clawpanel.git
|
||||
cd clawpanel && npm install
|
||||
|
||||
# 데스크톱 (Rust + Tauri v2 필요)
|
||||
npm run tauri dev # 개발
|
||||
npm run tauri build # 프로덕션
|
||||
|
||||
# Web만 (Rust 불필요)
|
||||
npm run dev # 핫 리로드 개발
|
||||
npm run build && npm run serve # 프로덕션
|
||||
```
|
||||
|
||||
## 관련 프로젝트
|
||||
|
||||
| 프로젝트 | 설명 |
|
||||
|---------|------|
|
||||
| [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslation) | AI Agent 프레임워크 |
|
||||
| [ClawApp](https://github.com/qingchencloud/clawapp) | 크로스 플랫폼 모바일 채팅 |
|
||||
| [cftunnel](https://github.com/qingchencloud/cftunnel) | Cloudflare Tunnel 도구 |
|
||||
|
||||
## 기여
|
||||
|
||||
Issue와 Pull Request를 환영합니다. [CONTRIBUTING.md](CONTRIBUTING.md)를 참조하세요.
|
||||
|
||||
## 라이선스
|
||||
|
||||
[AGPL-3.0](LICENSE) 라이선스. 상용 사용은 상용 라이선스 문의 바랍니다.
|
||||
|
||||
© 2026 QingchenCloud | [claw.qt.cool](https://claw.qt.cool)
|
||||
25
README.md
25
README.md
@@ -7,7 +7,7 @@
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<strong>🇨🇳 中文</strong> | <a href="README.en.md">🇺🇸 English</a>
|
||||
<strong>🇨🇳 中文</strong> | <a href="README.en.md">🇺🇸 English</a> | <a href="README.zh-TW.md">🇹🇼 繁體中文</a> | <a href="README.ja.md">🇯🇵 日本語</a> | <a href="README.ko.md">🇰🇷 한국어</a> | <a href="README.vi.md">🇻🇳 Tiếng Việt</a> | <a href="README.es.md">🇪🇸 Español</a> | <a href="README.pt.md">🇧🇷 Português</a> | <a href="README.ru.md">🇷🇺 Русский</a> | <a href="README.fr.md">🇫🇷 Français</a> | <a href="README.de.md">🇩🇪 Deutsch</a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
@@ -41,15 +41,22 @@ ClawPanel 是 [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslatio
|
||||
|
||||
> 🌐 **官网**: [claw.qt.cool](https://claw.qt.cool/) | 📦 **下载**: [GitHub Releases](https://github.com/qingchencloud/clawpanel/releases/latest)
|
||||
|
||||
### ⚡ OpenClaw 独立安装包(零依赖,无需 Node.js/npm)
|
||||
### 🎁 晴辰云 AI 接口
|
||||
|
||||
不想折腾 Node.js 环境?直接下载 [OpenClaw 独立安装包](https://github.com/qingchencloud/openclaw-standalone/releases/latest),**内置运行时,解压即用**:
|
||||
> 内部技术测试平台,面向部分用户开放体验。签到领额度,邀请得更多。
|
||||
|
||||
- **Windows**: 下载 `.exe` 安装向导,双击即装
|
||||
- **macOS / Linux / 树莓派**: `curl -fsSL https://dl.qrj.ai/openclaw/install.sh | bash`
|
||||
- **全平台**: [GitHub Releases](https://github.com/qingchencloud/openclaw-standalone/releases/latest)
|
||||
<p align="center">
|
||||
<a href="https://gpt.qt.cool"><img src="https://img.shields.io/badge/🔑 晴辰云 AI-gpt.qt.cool-6366f1?style=for-the-badge" alt="晴辰云 AI"></a>
|
||||
</p>
|
||||
|
||||
> ClawPanel 安装 OpenClaw 时会**自动优先使用独立安装包**,无需手动操作。此方案仅供不使用 ClawPanel 的用户独立安装。
|
||||
- **签到领测试额度** — 每日签到 + 邀请好友,持续获取测试额度
|
||||
- **兼容 OpenAI 接口** — 无缝对接 OpenClaw,即开即用
|
||||
- **资源策略** — 限速 + 请求上限,高峰期可能排队
|
||||
- **模型可用性** — 模型/接口以实际页面为准,可能灰度或版本切换
|
||||
|
||||
配合 OpenClaw 使用:在 [gpt.qt.cool](https://gpt.qt.cool) 注册并签到领取测试额度,获取 API Key 后,初始化 OpenClaw 时选择 **OpenAI Compatible** 提供商,填入地址和 Key 即可使用。
|
||||
|
||||
> ⚠️ **合规与责任边界**:本平台仅提供技术测试,禁止用于违法违规、绕过安全机制等用途。违规将限制访问并保留处置权。妥善保管 API Key,勿在截图/日志/代码库中泄露。具体规则以平台最新政策与页面展示为准。
|
||||
|
||||
### 🔥 开发板 / 嵌入式设备支持
|
||||
|
||||
@@ -90,7 +97,7 @@ ClawPanel 提供**纯 Web 版部署模式**(零 GUI 依赖),天然兼容 A
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/U9AttmsNHh"><strong>Discord</strong></a>
|
||||
·
|
||||
<a href="https://yb.tencent.com/gp/i/LsvIw7mdR7Lb"><strong>元宝派</strong></a>
|
||||
<a href="https://yb.tencent.com/gp/i/IIGXzcMcdh84"><strong>元宝派</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/discussions"><strong>Discussions</strong></a>
|
||||
·
|
||||
@@ -188,7 +195,7 @@ docker run -d --name clawpanel --restart unless-stopped \
|
||||
- **定时任务** — Cron 定时执行,支持多渠道投递
|
||||
- **日志查看** — 多日志源实时查看与关键词搜索
|
||||
- **记忆管理** — 记忆文件查看/编辑、分类管理、ZIP 导出、Agent 切换
|
||||
- **晴辰云 AI 接口** — 官方 AI 服务,签到送额度、充值最低 3 折消耗、未消耗包退
|
||||
- **晴辰云 AI 接口** — 内部技术测试平台,兼容 OpenAI 接口,签到领测试额度
|
||||
- **扩展工具** — cftunnel 内网穿透管理、ClawApp 状态监控
|
||||
- **关于** — 版本信息、社群入口、相关项目链接、一键升级
|
||||
|
||||
|
||||
165
README.pt.md
Normal file
165
README.pt.md
Normal file
@@ -0,0 +1,165 @@
|
||||
<p align="center">
|
||||
<img src="public/images/logo-brand.png" width="360" alt="ClawPanel">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
Painel de gestão OpenClaw com Assistente IA integrado — Instalação, Configuração, Diagnóstico e Correção com um clique
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="README.md">🇨🇳 中文</a> | <a href="README.en.md">🇺🇸 English</a> | <a href="README.zh-TW.md">🇹🇼 繁體中文</a> | <a href="README.ja.md">🇯🇵 日本語</a> | <a href="README.ko.md">🇰🇷 한국어</a> | <a href="README.vi.md">🇻🇳 Tiếng Việt</a> | <a href="README.es.md">🇪🇸 Español</a> | <strong>🇧🇷 Português</strong> | <a href="README.ru.md">🇷🇺 Русский</a> | <a href="README.fr.md">🇫🇷 Français</a> | <a href="README.de.md">🇩🇪 Deutsch</a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/qingchencloud/clawpanel/releases/latest">
|
||||
<img src="https://img.shields.io/github/v/release/qingchencloud/clawpanel?style=flat-square&color=6366f1" alt="Release">
|
||||
</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/releases/latest">
|
||||
<img src="https://img.shields.io/github/downloads/qingchencloud/clawpanel/total?style=flat-square&color=8b5cf6" alt="Downloads">
|
||||
</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/blob/main/LICENSE">
|
||||
<img src="https://img.shields.io/badge/license-AGPL--3.0-blue.svg?style=flat-square" alt="License">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
<p align="center">
|
||||
<img src="docs/feature-showcase.gif" width="800" alt="ClawPanel Showcase">
|
||||
</p>
|
||||
|
||||
ClawPanel é um painel de gestão visual para o framework de AI Agent [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslation). Possui um **assistente IA inteligente integrado** que ajuda a instalar o OpenClaw com um clique, diagnosticar configurações automaticamente, resolver problemas e corrigir erros. 8 ferramentas + 4 modos + Q&A interativo — fácil de gerenciar para iniciantes e especialistas.
|
||||
|
||||
> 🌐 **Website**: [claw.qt.cool](https://claw.qt.cool/) | 📦 **Download**: [GitHub Releases](https://github.com/qingchencloud/clawpanel/releases/latest)
|
||||
|
||||
### 🎁 QingchenCloud AI API
|
||||
|
||||
> Plataforma interna de testes técnicos, aberta para usuários selecionados. Faça login diariamente para ganhar créditos.
|
||||
|
||||
<p align="center">
|
||||
<a href="https://gpt.qt.cool"><img src="https://img.shields.io/badge/🔑 QingchenCloud AI-gpt.qt.cool-6366f1?style=for-the-badge" alt="QingchenCloud AI"></a>
|
||||
</p>
|
||||
|
||||
- **Créditos de login diário** — Login diário + convide amigos para ganhar créditos de teste
|
||||
- **API compatível com OpenAI** — Integração perfeita com OpenClaw
|
||||
- **Política de recursos** — Limite de velocidade + limite de requisições, possível fila em horários de pico
|
||||
- **Disponibilidade de modelos** — Modelos/APIs conforme exibição da página, possível rotação de versões
|
||||
|
||||
> ⚠️ **Conformidade**: Apenas para testes técnicos. Uso ilegal ou contornar mecanismos de segurança é proibido. Mantenha sua API Key segura. Regras sujeitas às políticas mais recentes da plataforma.
|
||||
|
||||
### 🔥 Suporte a placas de desenvolvimento / Dispositivos embarcados
|
||||
|
||||
- **Orange Pi / Raspberry Pi / RK3588** — `npm run serve` para executar
|
||||
- **Docker ARM64** — `docker run ghcr.io/qingchencloud/openclaw:latest`
|
||||
- **Armbian / Debian / Ubuntu Server** — Detecção automática de arquitetura
|
||||
- Sem necessidade de Rust / Tauri / GUI — **apenas Node.js 18+**
|
||||
|
||||
## Comunidade
|
||||
|
||||
Uma comunidade de desenvolvedores e entusiastas apaixonados por AI Agents — junte-se!
|
||||
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/U9AttmsNHh"><strong>Discord</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/discussions"><strong>Discussions</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/issues/new"><strong>Reportar Issue</strong></a>
|
||||
</p>
|
||||
|
||||
## Funcionalidades
|
||||
|
||||
- **🤖 Assistente IA (Novo)** — Assistente IA integrado, 4 modos + 8 ferramentas + Q&A interativo
|
||||
- **🖼️ Reconhecimento de imagens** — Cole capturas ou arraste imagens, IA analisa automaticamente
|
||||
- **Painel** — Visão geral do sistema, monitoramento de serviços em tempo real
|
||||
- **Gestão de serviços** — Iniciar/parar OpenClaw, detecção de versão e atualização com um clique
|
||||
- **Configuração de modelos** — Gestão multi-provedor, testes de conectividade em lote, ordenação por arrasto
|
||||
- **Configuração de Gateway** — Porta, escopo de acesso, Token de autenticação, Tailscale
|
||||
- **Canais de mensagens** — Gestão unificada de Telegram, Discord, Feishu, DingTalk, QQ
|
||||
- **Comunicação e automação** — Configurações de mensagens, broadcast, Webhooks, aprovação de execução
|
||||
- **Análise de uso** — Uso de tokens, custos de API, rankings de modelos/provedores
|
||||
- **Gestão de Agents** — CRUD de Agents, edição de identidade, gestão de workspace
|
||||
- **Chat** — Streaming, renderização Markdown, gestão de sessões
|
||||
- **Tarefas agendadas** — Execução agendada com Cron, entrega multicanal
|
||||
- **Visualizador de logs** — Logs em tempo real multi-fonte e busca por palavras-chave
|
||||
- **Gestão de memória** — Ver/editar arquivos de memória, exportar ZIP, trocar Agent
|
||||
- **QingchenCloud AI API** — Plataforma de testes interna, compatível com OpenAI
|
||||
- **Ferramentas de extensão** — Gestão de túneis cftunnel, monitoramento do ClawApp
|
||||
- **Sobre** — Informações de versão, links da comunidade, projetos relacionados
|
||||
|
||||
## Download e instalação
|
||||
|
||||
Acesse [Releases](https://github.com/qingchencloud/clawpanel/releases/latest) para a versão mais recente:
|
||||
|
||||
| Plataforma | Instalador |
|
||||
|-----------|-----------|
|
||||
| **Windows** | `.exe` (recomendado) ou `.msi` |
|
||||
| **macOS Apple Silicon** | `.dmg` (aarch64) |
|
||||
| **macOS Intel** | `.dmg` (x64) |
|
||||
| **Linux** | `.AppImage` / `.deb` / `.rpm` |
|
||||
|
||||
### Servidor Linux (Versão Web)
|
||||
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/qingchencloud/clawpanel/main/scripts/linux-deploy.sh | bash
|
||||
```
|
||||
|
||||
### Docker
|
||||
|
||||
```bash
|
||||
docker run -d --name clawpanel --restart unless-stopped \
|
||||
-p 1420:1420 -v clawpanel-data:/root/.openclaw \
|
||||
node:22-slim \
|
||||
sh -c "apt-get update && apt-get install -y git && \
|
||||
npm install -g @qingchencloud/openclaw-zh --registry https://registry.npmmirror.com && \
|
||||
git clone https://github.com/qingchencloud/clawpanel.git /app && \
|
||||
cd /app && npm install && npm run build && npm run serve"
|
||||
```
|
||||
|
||||
## Início rápido
|
||||
|
||||
1. **Configuração inicial** — Primeira execução detecta automaticamente Node.js, Git, OpenClaw. Instalação com um clique se necessário
|
||||
2. **Configurar modelos** — Adicionar provedores de IA (DeepSeek, OpenAI, Ollama, etc.) e testar conectividade
|
||||
3. **Iniciar Gateway** — Ir para Gestão de serviços, clicar em "Iniciar". Status verde = pronto
|
||||
4. **Começar a conversar** — Ir para Chat ao vivo, selecionar modelo e iniciar conversa
|
||||
|
||||
## Arquitetura técnica
|
||||
|
||||
| Camada | Tecnologia | Descrição |
|
||||
|--------|-----------|-----------|
|
||||
| Frontend | Vanilla JS + Vite | Sem framework, leve |
|
||||
| Backend | Rust + Tauri v2 | Performance nativa, multiplataforma |
|
||||
| Comunicação | Tauri IPC + Shell Plugin | Ponte frontend-backend |
|
||||
| Estilos | Pure CSS (CSS Variables) | Temas escuro/claro |
|
||||
|
||||
## Compilar a partir do código-fonte
|
||||
|
||||
```bash
|
||||
git clone https://github.com/qingchencloud/clawpanel.git
|
||||
cd clawpanel && npm install
|
||||
|
||||
# Desktop (requer Rust + Tauri v2)
|
||||
npm run tauri dev # Desenvolvimento
|
||||
npm run tauri build # Produção
|
||||
|
||||
# Apenas Web (sem Rust)
|
||||
npm run dev # Hot reload
|
||||
npm run build && npm run serve # Produção
|
||||
```
|
||||
|
||||
## Projetos relacionados
|
||||
|
||||
| Projeto | Descrição |
|
||||
|---------|-----------|
|
||||
| [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslation) | Framework AI Agent |
|
||||
| [ClawApp](https://github.com/qingchencloud/clawapp) | Cliente móvel multiplataforma |
|
||||
| [cftunnel](https://github.com/qingchencloud/cftunnel) | Ferramenta Cloudflare Tunnel |
|
||||
|
||||
## Contribuir
|
||||
|
||||
Issues e Pull Requests são bem-vindos. Veja [CONTRIBUTING.md](CONTRIBUTING.md).
|
||||
|
||||
## Licença
|
||||
|
||||
[AGPL-3.0](LICENSE). Contate-nos para licença comercial.
|
||||
|
||||
© 2026 QingchenCloud | [claw.qt.cool](https://claw.qt.cool)
|
||||
165
README.ru.md
Normal file
165
README.ru.md
Normal file
@@ -0,0 +1,165 @@
|
||||
<p align="center">
|
||||
<img src="public/images/logo-brand.png" width="360" alt="ClawPanel">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
Панель управления OpenClaw со встроенным ИИ-ассистентом — Установка, Настройка, Диагностика и Исправление в один клик
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="README.md">🇨🇳 中文</a> | <a href="README.en.md">🇺🇸 English</a> | <a href="README.zh-TW.md">🇹🇼 繁體中文</a> | <a href="README.ja.md">🇯🇵 日本語</a> | <a href="README.ko.md">🇰🇷 한국어</a> | <a href="README.vi.md">🇻🇳 Tiếng Việt</a> | <a href="README.es.md">🇪🇸 Español</a> | <a href="README.pt.md">🇧🇷 Português</a> | <strong>🇷🇺 Русский</strong> | <a href="README.fr.md">🇫🇷 Français</a> | <a href="README.de.md">🇩🇪 Deutsch</a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/qingchencloud/clawpanel/releases/latest">
|
||||
<img src="https://img.shields.io/github/v/release/qingchencloud/clawpanel?style=flat-square&color=6366f1" alt="Release">
|
||||
</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/releases/latest">
|
||||
<img src="https://img.shields.io/github/downloads/qingchencloud/clawpanel/total?style=flat-square&color=8b5cf6" alt="Downloads">
|
||||
</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/blob/main/LICENSE">
|
||||
<img src="https://img.shields.io/badge/license-AGPL--3.0-blue.svg?style=flat-square" alt="License">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
<p align="center">
|
||||
<img src="docs/feature-showcase.gif" width="800" alt="ClawPanel Showcase">
|
||||
</p>
|
||||
|
||||
ClawPanel — это визуальная панель управления для фреймворка AI-агентов [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslation). Со **встроенным интеллектуальным ИИ-ассистентом**, который помогает установить OpenClaw одним кликом, автоматически диагностировать конфигурации, устранять неполадки и исправлять ошибки. 8 инструментов + 4 режима + интерактивный Q&A — удобное управление для новичков и экспертов.
|
||||
|
||||
> 🌐 **Сайт**: [claw.qt.cool](https://claw.qt.cool/) | 📦 **Скачать**: [GitHub Releases](https://github.com/qingchencloud/clawpanel/releases/latest)
|
||||
|
||||
### 🎁 QingchenCloud AI API
|
||||
|
||||
> Внутренняя платформа технического тестирования, доступна для отдельных пользователей. Ежедневный вход для получения кредитов.
|
||||
|
||||
<p align="center">
|
||||
<a href="https://gpt.qt.cool"><img src="https://img.shields.io/badge/🔑 QingchenCloud AI-gpt.qt.cool-6366f1?style=for-the-badge" alt="QingchenCloud AI"></a>
|
||||
</p>
|
||||
|
||||
- **Ежедневные кредиты** — Ежедневный вход + приглашение друзей для получения тестовых кредитов
|
||||
- **API, совместимый с OpenAI** — Бесшовная интеграция с OpenClaw
|
||||
- **Политика ресурсов** — Ограничение скорости + лимит запросов, возможна очередь в пиковые часы
|
||||
- **Доступность моделей** — Модели/API зависят от актуального отображения на странице, возможна ротация версий
|
||||
|
||||
> ⚠️ **Соответствие**: Только для технического тестирования. Незаконное использование или обход механизмов безопасности запрещены. Храните API Key в безопасности. Правила регулируются актуальной политикой платформы.
|
||||
|
||||
### 🔥 Поддержка плат разработки / Встраиваемых устройств
|
||||
|
||||
- **Orange Pi / Raspberry Pi / RK3588** — `npm run serve` для запуска
|
||||
- **Docker ARM64** — `docker run ghcr.io/qingchencloud/openclaw:latest`
|
||||
- **Armbian / Debian / Ubuntu Server** — Автоопределение архитектуры
|
||||
- Без Rust / Tauri / GUI — **только Node.js 18+**
|
||||
|
||||
## Сообщество
|
||||
|
||||
Сообщество увлечённых разработчиков и пользователей AI-агентов — присоединяйтесь!
|
||||
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/U9AttmsNHh"><strong>Discord</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/discussions"><strong>Discussions</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/issues/new"><strong>Сообщить об Issue</strong></a>
|
||||
</p>
|
||||
|
||||
## Возможности
|
||||
|
||||
- **🤖 ИИ-ассистент (Новый)** — Встроенный ИИ-ассистент, 4 режима + 8 инструментов + интерактивный Q&A
|
||||
- **🖼️ Распознавание изображений** — Вставьте скриншот или перетащите изображение, ИИ автоматически анализирует
|
||||
- **Панель мониторинга** — Обзор системы, мониторинг сервисов в реальном времени
|
||||
- **Управление сервисами** — Запуск/остановка OpenClaw, обнаружение версии и обновление одним кликом
|
||||
- **Настройка моделей** — Управление несколькими провайдерами, пакетное тестирование подключения, сортировка перетаскиванием
|
||||
- **Настройка Gateway** — Порт, область доступа, токен аутентификации, Tailscale
|
||||
- **Каналы сообщений** — Единое управление Telegram, Discord, Feishu, DingTalk, QQ
|
||||
- **Коммуникация и автоматизация** — Настройки сообщений, рассылка, Webhooks, утверждение выполнения
|
||||
- **Аналитика использования** — Использование токенов, расходы API, рейтинги моделей/провайдеров
|
||||
- **Управление агентами** — CRUD агентов, редактирование идентичности, управление workspace
|
||||
- **Чат** — Потоковая передача, рендеринг Markdown, управление сессиями
|
||||
- **Запланированные задачи** — Выполнение по расписанию Cron, многоканальная доставка
|
||||
- **Просмотр логов** — Логи в реальном времени из нескольких источников и поиск
|
||||
- **Управление памятью** — Просмотр/редактирование файлов памяти, экспорт ZIP, переключение агентов
|
||||
- **QingchenCloud AI API** — Внутренняя тестовая платформа, совместимая с OpenAI
|
||||
- **Расширения** — Управление туннелями cftunnel, мониторинг ClawApp
|
||||
- **О программе** — Информация о версии, ссылки сообщества, связанные проекты
|
||||
|
||||
## Скачать и установить
|
||||
|
||||
Перейдите на [Releases](https://github.com/qingchencloud/clawpanel/releases/latest) для последней версии:
|
||||
|
||||
| Платформа | Установщик |
|
||||
|----------|-----------|
|
||||
| **Windows** | `.exe` (рекомендуется) или `.msi` |
|
||||
| **macOS Apple Silicon** | `.dmg` (aarch64) |
|
||||
| **macOS Intel** | `.dmg` (x64) |
|
||||
| **Linux** | `.AppImage` / `.deb` / `.rpm` |
|
||||
|
||||
### Linux сервер (Web-версия)
|
||||
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/qingchencloud/clawpanel/main/scripts/linux-deploy.sh | bash
|
||||
```
|
||||
|
||||
### Docker
|
||||
|
||||
```bash
|
||||
docker run -d --name clawpanel --restart unless-stopped \
|
||||
-p 1420:1420 -v clawpanel-data:/root/.openclaw \
|
||||
node:22-slim \
|
||||
sh -c "apt-get update && apt-get install -y git && \
|
||||
npm install -g @qingchencloud/openclaw-zh --registry https://registry.npmmirror.com && \
|
||||
git clone https://github.com/qingchencloud/clawpanel.git /app && \
|
||||
cd /app && npm install && npm run build && npm run serve"
|
||||
```
|
||||
|
||||
## Быстрый старт
|
||||
|
||||
1. **Начальная настройка** — При первом запуске автоопределение Node.js, Git, OpenClaw. Установка одним кликом при необходимости
|
||||
2. **Настройка моделей** — Добавить провайдеров ИИ (DeepSeek, OpenAI, Ollama и др.) и протестировать подключение
|
||||
3. **Запуск Gateway** — Перейти в Управление сервисами, нажать «Запустить». Зелёный статус = готово
|
||||
4. **Начать чат** — Перейти в Чат, выбрать модель и начать разговор
|
||||
|
||||
## Техническая архитектура
|
||||
|
||||
| Уровень | Технология | Описание |
|
||||
|---------|-----------|----------|
|
||||
| Frontend | Vanilla JS + Vite | Без фреймворков, лёгкий |
|
||||
| Backend | Rust + Tauri v2 | Нативная производительность, кроссплатформенность |
|
||||
| Коммуникация | Tauri IPC + Shell Plugin | Мост frontend-backend |
|
||||
| Стили | Pure CSS (CSS Variables) | Тёмная/светлая темы |
|
||||
|
||||
## Сборка из исходного кода
|
||||
|
||||
```bash
|
||||
git clone https://github.com/qingchencloud/clawpanel.git
|
||||
cd clawpanel && npm install
|
||||
|
||||
# Десктоп (требуется Rust + Tauri v2)
|
||||
npm run tauri dev # Разработка
|
||||
npm run tauri build # Продакшн
|
||||
|
||||
# Только Web (без Rust)
|
||||
npm run dev # Hot reload
|
||||
npm run build && npm run serve # Продакшн
|
||||
```
|
||||
|
||||
## Связанные проекты
|
||||
|
||||
| Проект | Описание |
|
||||
|--------|----------|
|
||||
| [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslation) | Фреймворк AI-агентов |
|
||||
| [ClawApp](https://github.com/qingchencloud/clawapp) | Кроссплатформенный мобильный чат |
|
||||
| [cftunnel](https://github.com/qingchencloud/cftunnel) | Инструмент Cloudflare Tunnel |
|
||||
|
||||
## Вклад
|
||||
|
||||
Issues и Pull Requests приветствуются. См. [CONTRIBUTING.md](CONTRIBUTING.md).
|
||||
|
||||
## Лицензия
|
||||
|
||||
[AGPL-3.0](LICENSE). Для коммерческого использования обращайтесь за коммерческой лицензией.
|
||||
|
||||
© 2026 QingchenCloud | [claw.qt.cool](https://claw.qt.cool)
|
||||
165
README.vi.md
Normal file
165
README.vi.md
Normal file
@@ -0,0 +1,165 @@
|
||||
<p align="center">
|
||||
<img src="public/images/logo-brand.png" width="360" alt="ClawPanel">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
Bảng quản lý OpenClaw với Trợ lý AI tích hợp — Cài đặt, Cấu hình, Chẩn đoán & Sửa lỗi một cú nhấp
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="README.md">🇨🇳 中文</a> | <a href="README.en.md">🇺🇸 English</a> | <a href="README.zh-TW.md">🇹🇼 繁體中文</a> | <a href="README.ja.md">🇯🇵 日本語</a> | <a href="README.ko.md">🇰🇷 한국어</a> | <strong>🇻🇳 Tiếng Việt</strong> | <a href="README.es.md">🇪🇸 Español</a> | <a href="README.pt.md">🇧🇷 Português</a> | <a href="README.ru.md">🇷🇺 Русский</a> | <a href="README.fr.md">🇫🇷 Français</a> | <a href="README.de.md">🇩🇪 Deutsch</a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/qingchencloud/clawpanel/releases/latest">
|
||||
<img src="https://img.shields.io/github/v/release/qingchencloud/clawpanel?style=flat-square&color=6366f1" alt="Release">
|
||||
</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/releases/latest">
|
||||
<img src="https://img.shields.io/github/downloads/qingchencloud/clawpanel/total?style=flat-square&color=8b5cf6" alt="Downloads">
|
||||
</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/blob/main/LICENSE">
|
||||
<img src="https://img.shields.io/badge/license-AGPL--3.0-blue.svg?style=flat-square" alt="License">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
<p align="center">
|
||||
<img src="docs/feature-showcase.gif" width="800" alt="ClawPanel Showcase">
|
||||
</p>
|
||||
|
||||
ClawPanel là bảng quản lý trực quan cho framework AI Agent [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslation). Tích hợp **trợ lý AI thông minh**, giúp bạn cài đặt OpenClaw một cú nhấp, tự động chẩn đoán cấu hình, xử lý sự cố và sửa lỗi. 8 công cụ + 4 chế độ + hỏi đáp tương tác — dễ dàng quản lý cho cả người mới và chuyên gia.
|
||||
|
||||
> 🌐 **Website**: [claw.qt.cool](https://claw.qt.cool/) | 📦 **Tải xuống**: [GitHub Releases](https://github.com/qingchencloud/clawpanel/releases/latest)
|
||||
|
||||
### 🎁 QingchenCloud AI API
|
||||
|
||||
> Nền tảng kiểm thử kỹ thuật nội bộ, mở cho một số người dùng. Điểm danh hàng ngày để nhận tín dụng.
|
||||
|
||||
<p align="center">
|
||||
<a href="https://gpt.qt.cool"><img src="https://img.shields.io/badge/🔑 QingchenCloud AI-gpt.qt.cool-6366f1?style=for-the-badge" alt="QingchenCloud AI"></a>
|
||||
</p>
|
||||
|
||||
- **Tín dụng điểm danh** — Điểm danh hàng ngày + mời bạn bè để nhận tín dụng kiểm thử
|
||||
- **API tương thích OpenAI** — Tích hợp liền mạch với OpenClaw
|
||||
- **Chính sách tài nguyên** — Giới hạn tốc độ + giới hạn yêu cầu, có thể xếp hàng giờ cao điểm
|
||||
- **Khả dụng mô hình** — Mô hình/API theo hiển thị thực tế, có thể chuyển phiên bản
|
||||
|
||||
> ⚠️ **Tuân thủ**: Chỉ dành cho kiểm thử kỹ thuật. Cấm sử dụng bất hợp pháp. Bảo quản API Key an toàn. Quy tắc theo chính sách mới nhất của nền tảng.
|
||||
|
||||
### 🔥 Hỗ trợ Bo mạch phát triển / Thiết bị nhúng
|
||||
|
||||
- **Orange Pi / Raspberry Pi / RK3588** — `npm run serve` để chạy
|
||||
- **Docker ARM64** — `docker run ghcr.io/qingchencloud/openclaw:latest`
|
||||
- **Armbian / Debian / Ubuntu Server** — Tự động phát hiện kiến trúc
|
||||
- Không cần Rust / Tauri / GUI — **chỉ cần Node.js 18+**
|
||||
|
||||
## Cộng đồng
|
||||
|
||||
Cộng đồng các nhà phát triển và người dùng đam mê AI Agent — hãy tham gia!
|
||||
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/U9AttmsNHh"><strong>Discord</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/discussions"><strong>Discussions</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/issues/new"><strong>Báo cáo Issue</strong></a>
|
||||
</p>
|
||||
|
||||
## Tính năng
|
||||
|
||||
- **🤖 Trợ lý AI (Mới)** — Trợ lý AI tích hợp, 4 chế độ + 8 công cụ + hỏi đáp tương tác
|
||||
- **🖼️ Nhận dạng hình ảnh** — Dán ảnh chụp màn hình hoặc kéo thả hình ảnh, AI tự động phân tích
|
||||
- **Bảng điều khiển** — Tổng quan hệ thống, giám sát dịch vụ thời gian thực
|
||||
- **Quản lý dịch vụ** — Khởi động/dừng OpenClaw, phát hiện phiên bản & nâng cấp một cú nhấp
|
||||
- **Cấu hình mô hình** — Quản lý nhiều nhà cung cấp, kiểm tra kết nối hàng loạt, kéo sắp xếp
|
||||
- **Cấu hình Gateway** — Cổng, phạm vi truy cập, Token xác thực, Tailscale
|
||||
- **Kênh nhắn tin** — Quản lý thống nhất Telegram, Discord, Feishu, DingTalk, QQ
|
||||
- **Truyền thông & Tự động hóa** — Cài đặt tin nhắn, phát sóng, Webhook, phê duyệt
|
||||
- **Phân tích sử dụng** — Sử dụng Token, chi phí API, xếp hạng mô hình/nhà cung cấp
|
||||
- **Quản lý Agent** — CRUD Agent, chỉnh sửa danh tính, quản lý workspace
|
||||
- **Trò chuyện** — Streaming, hiển thị Markdown, quản lý phiên
|
||||
- **Tác vụ định kỳ** — Thực thi theo lịch Cron, gửi đa kênh
|
||||
- **Xem nhật ký** — Nhật ký thời gian thực đa nguồn và tìm kiếm
|
||||
- **Quản lý bộ nhớ** — Xem/sửa tệp bộ nhớ, xuất ZIP, chuyển Agent
|
||||
- **QingchenCloud AI API** — Nền tảng kiểm thử nội bộ, tương thích OpenAI
|
||||
- **Công cụ mở rộng** — Quản lý tunnel cftunnel, giám sát ClawApp
|
||||
- **Giới thiệu** — Thông tin phiên bản, liên kết cộng đồng, dự án liên quan
|
||||
|
||||
## Tải xuống & Cài đặt
|
||||
|
||||
Truy cập [Releases](https://github.com/qingchencloud/clawpanel/releases/latest) để tải phiên bản mới nhất:
|
||||
|
||||
| Nền tảng | Trình cài đặt |
|
||||
|----------|--------------|
|
||||
| **Windows** | `.exe` (khuyến nghị) hoặc `.msi` |
|
||||
| **macOS Apple Silicon** | `.dmg` (aarch64) |
|
||||
| **macOS Intel** | `.dmg` (x64) |
|
||||
| **Linux** | `.AppImage` / `.deb` / `.rpm` |
|
||||
|
||||
### Linux Server (Phiên bản Web)
|
||||
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/qingchencloud/clawpanel/main/scripts/linux-deploy.sh | bash
|
||||
```
|
||||
|
||||
### Docker
|
||||
|
||||
```bash
|
||||
docker run -d --name clawpanel --restart unless-stopped \
|
||||
-p 1420:1420 -v clawpanel-data:/root/.openclaw \
|
||||
node:22-slim \
|
||||
sh -c "apt-get update && apt-get install -y git && \
|
||||
npm install -g @qingchencloud/openclaw-zh --registry https://registry.npmmirror.com && \
|
||||
git clone https://github.com/qingchencloud/clawpanel.git /app && \
|
||||
cd /app && npm install && npm run build && npm run serve"
|
||||
```
|
||||
|
||||
## Bắt đầu nhanh
|
||||
|
||||
1. **Thiết lập ban đầu** — Lần chạy đầu tự động phát hiện Node.js, Git, OpenClaw. Cài đặt một cú nhấp nếu thiếu
|
||||
2. **Cấu hình mô hình** — Thêm nhà cung cấp AI (DeepSeek, OpenAI, Ollama, v.v.) và kiểm tra kết nối
|
||||
3. **Khởi động Gateway** — Vào Quản lý dịch vụ, nhấp "Khởi động". Trạng thái xanh = sẵn sàng
|
||||
4. **Bắt đầu trò chuyện** — Vào Chat trực tiếp, chọn mô hình và bắt đầu cuộc trò chuyện
|
||||
|
||||
## Kiến trúc kỹ thuật
|
||||
|
||||
| Lớp | Công nghệ | Mô tả |
|
||||
|-----|-----------|-------|
|
||||
| Frontend | Vanilla JS + Vite | Không framework, nhẹ |
|
||||
| Backend | Rust + Tauri v2 | Hiệu năng native, đa nền tảng |
|
||||
| Giao tiếp | Tauri IPC + Shell Plugin | Cầu nối frontend-backend |
|
||||
| Style | Pure CSS (CSS Variables) | Theme tối/sáng |
|
||||
|
||||
## Build từ mã nguồn
|
||||
|
||||
```bash
|
||||
git clone https://github.com/qingchencloud/clawpanel.git
|
||||
cd clawpanel && npm install
|
||||
|
||||
# Desktop (cần Rust + Tauri v2)
|
||||
npm run tauri dev # Phát triển
|
||||
npm run tauri build # Production
|
||||
|
||||
# Chỉ Web (không cần Rust)
|
||||
npm run dev # Hot reload
|
||||
npm run build && npm run serve # Production
|
||||
```
|
||||
|
||||
## Dự án liên quan
|
||||
|
||||
| Dự án | Mô tả |
|
||||
|-------|-------|
|
||||
| [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslation) | Framework AI Agent |
|
||||
| [ClawApp](https://github.com/qingchencloud/clawapp) | Ứng dụng chat di động đa nền tảng |
|
||||
| [cftunnel](https://github.com/qingchencloud/cftunnel) | Công cụ Cloudflare Tunnel |
|
||||
|
||||
## Đóng góp
|
||||
|
||||
Chào đón Issue và Pull Request. Xem [CONTRIBUTING.md](CONTRIBUTING.md).
|
||||
|
||||
## Giấy phép
|
||||
|
||||
[AGPL-3.0](LICENSE). Liên hệ để được cấp phép thương mại.
|
||||
|
||||
© 2026 QingchenCloud | [claw.qt.cool](https://claw.qt.cool)
|
||||
178
README.zh-TW.md
Normal file
178
README.zh-TW.md
Normal file
@@ -0,0 +1,178 @@
|
||||
<p align="center">
|
||||
<img src="public/images/logo-brand.png" width="360" alt="ClawPanel">
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
內建 AI 助手的 OpenClaw 管理面板 — 一鍵安裝、設定、診斷、修復
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="README.md">🇨🇳 中文</a> | <a href="README.en.md">🇺🇸 English</a> | <strong>🇹🇼 繁體中文</strong> | <a href="README.ja.md">🇯🇵 日本語</a> | <a href="README.ko.md">🇰🇷 한국어</a> | <a href="README.vi.md">🇻🇳 Tiếng Việt</a> | <a href="README.es.md">🇪🇸 Español</a> | <a href="README.pt.md">🇧🇷 Português</a> | <a href="README.ru.md">🇷🇺 Русский</a> | <a href="README.fr.md">🇫🇷 Français</a> | <a href="README.de.md">🇩🇪 Deutsch</a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/qingchencloud/clawpanel/releases/latest">
|
||||
<img src="https://img.shields.io/github/v/release/qingchencloud/clawpanel?style=flat-square&color=6366f1" alt="Release">
|
||||
</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/releases/latest">
|
||||
<img src="https://img.shields.io/github/downloads/qingchencloud/clawpanel/total?style=flat-square&color=8b5cf6" alt="Downloads">
|
||||
</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/blob/main/LICENSE">
|
||||
<img src="https://img.shields.io/badge/license-AGPL--3.0-blue.svg?style=flat-square" alt="License">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
<p align="center">
|
||||
<img src="docs/feature-showcase.gif" width="800" alt="ClawPanel 功能展示">
|
||||
</p>
|
||||
|
||||
ClawPanel 是 [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslation) AI Agent 框架的視覺化管理面板。**內建智慧 AI 助手**,幫你一鍵安裝 OpenClaw、自動診斷設定、排查問題、修復錯誤。8 大工具 + 4 種模式 + 互動式問答,從新手到老手都能輕鬆管理。
|
||||
|
||||
> 🌐 **官網**: [claw.qt.cool](https://claw.qt.cool/) | 📦 **下載**: [GitHub Releases](https://github.com/qingchencloud/clawpanel/releases/latest)
|
||||
|
||||
### 🎁 晴辰雲 AI 介面
|
||||
|
||||
> 內部技術測試平台,面向部分使用者開放體驗。簽到領額度,邀請得更多。
|
||||
|
||||
<p align="center">
|
||||
<a href="https://gpt.qt.cool"><img src="https://img.shields.io/badge/🔑 晴辰雲 AI-gpt.qt.cool-6366f1?style=for-the-badge" alt="晴辰雲 AI"></a>
|
||||
</p>
|
||||
|
||||
- **簽到領測試額度** — 每日簽到 + 邀請好友,持續獲取測試額度
|
||||
- **相容 OpenAI 介面** — 無縫對接 OpenClaw,即開即用
|
||||
- **資源策略** — 限速 + 請求上限,高峰期可能排隊
|
||||
- **模型可用性** — 模型/介面以實際頁面為準,可能灰度或版本切換
|
||||
|
||||
> ⚠️ **合規與責任邊界**:本平台僅提供技術測試,禁止用於違法違規、繞過安全機制等用途。妥善保管 API Key。具體規則以平台最新政策為準。
|
||||
|
||||
### 🔥 開發板 / 嵌入式裝置支援
|
||||
|
||||
- **Orange Pi / 樹莓派 / RK3588** — `npm run serve` 即可執行
|
||||
- **Docker ARM64** — `docker run ghcr.io/qingchencloud/openclaw:latest`
|
||||
- **Armbian / Debian / Ubuntu Server** — 自動偵測架構
|
||||
- 無需 Rust / Tauri / GUI — **只要有 Node.js 18+ 就能跑**
|
||||
|
||||
## 社群
|
||||
|
||||
一群對 AI Agent 充滿熱情的開發者和玩家,歡迎加入交流。
|
||||
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/U9AttmsNHh"><strong>Discord</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/discussions"><strong>Discussions</strong></a>
|
||||
·
|
||||
<a href="https://github.com/qingchencloud/clawpanel/issues/new"><strong>回報 Issue</strong></a>
|
||||
</p>
|
||||
|
||||
## 功能特性
|
||||
|
||||
- **🤖 AI 助手(全新)** — 內建 AI 助手,4 種模式 + 8 大工具 + 互動式問答
|
||||
- **🖼️ 圖片辨識** — 貼上截圖或拖曳圖片,AI 自動辨識分析
|
||||
- **儀表板** — 系統概覽,即時服務狀態監控,快捷操作
|
||||
- **服務管理** — OpenClaw 啟停控制、版本偵測與一鍵升級
|
||||
- **模型設定** — 多服務商管理、批次連通性測試、拖曳排序、自動儲存
|
||||
- **閘道設定** — 埠口、存取權限、認證 Token、Tailscale
|
||||
- **訊息頻道** — 統一管理 Telegram、Discord、飛書、釘釘、QQ
|
||||
- **通訊與自動化** — 訊息設定、廣播策略、Webhook、執行審批
|
||||
- **使用情況** — Token 用量、API 費用、模型/服務商排行
|
||||
- **Agent 管理** — Agent 增刪改查、身分編輯、工作區管理
|
||||
- **聊天** — 串流回應、Markdown 渲染、對話管理
|
||||
- **定時任務** — Cron 定時執行,多頻道投遞
|
||||
- **日誌檢視** — 多來源即時日誌與關鍵字搜尋
|
||||
- **記憶管理** — 記憶檔案檢視/編輯、ZIP 匯出、Agent 切換
|
||||
- **晴辰雲 AI 介面** — 內部測試平台,相容 OpenAI
|
||||
- **擴充工具** — cftunnel 隧道管理、ClawApp 狀態監控
|
||||
- **關於** — 版本資訊、社群入口、相關專案連結
|
||||
|
||||
## 下載安裝
|
||||
|
||||
前往 [Releases](https://github.com/qingchencloud/clawpanel/releases/latest) 下載最新版本:
|
||||
|
||||
| 平台 | 安裝檔 |
|
||||
|------|--------|
|
||||
| **Windows** | `.exe` 安裝程式(推薦)或 `.msi` |
|
||||
| **macOS Apple Silicon** | `.dmg` (aarch64) |
|
||||
| **macOS Intel** | `.dmg` (x64) |
|
||||
| **Linux** | `.AppImage` / `.deb` / `.rpm` |
|
||||
|
||||
### Linux 伺服器(Web 版)
|
||||
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/qingchencloud/clawpanel/main/scripts/linux-deploy.sh | bash
|
||||
```
|
||||
|
||||
### Docker
|
||||
|
||||
```bash
|
||||
docker run -d --name clawpanel --restart unless-stopped \
|
||||
-p 1420:1420 -v clawpanel-data:/root/.openclaw \
|
||||
node:22-slim \
|
||||
sh -c "apt-get update && apt-get install -y git && \
|
||||
npm install -g @qingchencloud/openclaw-zh --registry https://registry.npmmirror.com && \
|
||||
git clone https://github.com/qingchencloud/clawpanel.git /app && \
|
||||
cd /app && npm install && npm run build && npm run serve"
|
||||
```
|
||||
|
||||
## 快速上手
|
||||
|
||||
1. **初始設定** — 首次啟動自動偵測 Node.js、Git、OpenClaw。未安裝則一鍵安裝
|
||||
2. **設定模型** — 新增 AI 服務商(DeepSeek、OpenAI、Ollama 等),測試連線
|
||||
3. **啟動 Gateway** — 前往服務管理,點擊「啟動」。綠色狀態 = 就緒
|
||||
4. **開始聊天** — 前往即時聊天,選擇模型後開始對話
|
||||
|
||||
## 🤖 AI 助手亮點
|
||||
|
||||
可**直接操作系統**的 AI 助手 — 診斷、修復、甚至提交 PR。
|
||||
|
||||
### 四種模式
|
||||
|
||||
| 模式 | 工具 | 寫入檔案 | 確認 | 適用場景 |
|
||||
|------|------|---------|------|---------|
|
||||
| **聊天** 💬 | ❌ | ❌ | — | 純問答 |
|
||||
| **規劃** 📋 | ✅ | ❌ | ✅ | 讀取設定/日誌,輸出方案 |
|
||||
| **執行** ⚡ | ✅ | ✅ | ✅ | 正常作業,危險操作需確認 |
|
||||
| **無限** ∞ | ✅ | ✅ | ❌ | 全自動 |
|
||||
|
||||
## 技術架構
|
||||
|
||||
| 層級 | 技術 | 說明 |
|
||||
|------|------|------|
|
||||
| 前端 | Vanilla JS + Vite | 零框架依賴,輕量 |
|
||||
| 後端 | Rust + Tauri v2 | 原生效能,跨平台 |
|
||||
| 通訊 | Tauri IPC + Shell Plugin | 前後端橋接 |
|
||||
| 樣式 | Pure CSS (CSS Variables) | 暗色/亮色主題 |
|
||||
|
||||
## 從原始碼建置
|
||||
|
||||
```bash
|
||||
git clone https://github.com/qingchencloud/clawpanel.git
|
||||
cd clawpanel && npm install
|
||||
|
||||
# 桌面版(需要 Rust + Tauri v2)
|
||||
npm run tauri dev # 開發
|
||||
npm run tauri build # 正式版
|
||||
|
||||
# 僅 Web(無需 Rust)
|
||||
npm run dev # 熱更新開發
|
||||
npm run build && npm run serve # 正式版
|
||||
```
|
||||
|
||||
## 相關專案
|
||||
|
||||
| 專案 | 說明 |
|
||||
|------|------|
|
||||
| [OpenClaw](https://github.com/1186258278/OpenClawChineseTranslation) | AI Agent 框架 |
|
||||
| [ClawApp](https://github.com/qingchencloud/clawapp) | 跨平台行動聊天客戶端 |
|
||||
| [cftunnel](https://github.com/qingchencloud/cftunnel) | Cloudflare Tunnel 工具 |
|
||||
|
||||
## 貢獻
|
||||
|
||||
歡迎提交 Issue 和 Pull Request。詳見 [CONTRIBUTING.md](CONTRIBUTING.md)。
|
||||
|
||||
## 授權條款
|
||||
|
||||
[AGPL-3.0](LICENSE) 開源授權。商用需求請聯繫取得商業授權。
|
||||
|
||||
© 2026 QingchenCloud | [claw.qt.cool](https://claw.qt.cool)
|
||||
@@ -4,13 +4,13 @@
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>ClawPanel - OpenClaw AI Agent 可视化管理面板 | 快速搭建、配置、监控你的 AI 智能体</title>
|
||||
<meta name="description" content="ClawPanel 是 OpenClaw AI Agent 框架的可视化管理面板,基于 Tauri v2 构建的跨平台桌面应用。内置 AI 助手支持工具调用(终端执行、文件读写、目录浏览),让 AI 帮你诊断和修复 OpenClaw 配置。支持仪表盘监控、多模型配置(OpenAI/DeepSeek/Kimi/Anthropic)、消息渠道管理、内置 QQ 机器人、实时 AI 聊天、记忆管理、Agent 管理、网关配置、服务管控、日志查看、内网穿透、系统诊断。一键安装 OpenClaw,快速搭建你的私有 AI Agent,开源免费,支持 Windows/macOS/Linux。">
|
||||
<meta name="keywords" content="ClawPanel, OpenClaw, AI Agent, AI 智能体, 管理面板, 可视化管理, 快速搭建, 一键安装, 桌面应用, 跨平台, Tauri, Tauri v2, Rust, 开源, 免费, LLM, 大语言模型, 多模型, 模型配置, OpenAI, DeepSeek, Kimi, Anthropic, Claude, 消息渠道, QQ 机器人, Telegram, Discord, 实时聊天, AI 对话, 流式响应, 记忆管理, Agent 管理, 多 Agent, 网关配置, Gateway, 服务管理, 日志查看, 内网穿透, Cloudflare Tunnel, 系统诊断, WebSocket, 仪表盘, 监控, 配置管理, 私有部署, 本地部署, 自托管, AI 工具, AI 平台, 智能体平台, 人工智能, 深度学习, 自然语言处理, NLP, 模型调度, 模型切换, 备选模型, 开箱即用, 零代码, 低代码, admin panel, dashboard, open source AI, self-hosted AI, local AI, AI management">
|
||||
<meta name="description" content="ClawPanel 是 OpenClaw AI Agent 框架的可视化管理面板,基于 Tauri v2 构建的跨平台桌面应用。内置晴辰助手(AI Assistant)支持工具调用(终端执行、文件读写、目录浏览),让 AI 帮你诊断和修复 OpenClaw 配置。支持仪表盘监控、多模型配置(OpenAI/DeepSeek/Kimi/Anthropic)、晴辰云 AI 接口一键接入、消息渠道管理、内置 QQ 机器人、实时 AI 聊天、记忆管理、Agent 管理、网关配置、服务管控、日志查看、内网穿透、系统诊断。一键安装 OpenClaw,快速搭建你的私有 AI Agent,开源免费,支持 Windows/macOS/Linux。支持 11 种语言。">
|
||||
<meta name="keywords" content="ClawPanel, OpenClaw, AI Agent, AI 智能体, 管理面板, 可视化管理, 快速搭建, 一键安装, 桌面应用, 跨平台, Tauri, Tauri v2, Rust, 开源, 免费, LLM, 大语言模型, 多模型, 模型配置, OpenAI, DeepSeek, Kimi, Anthropic, Claude, 晴辰云, 晴辰云 AI 接口, QingchenCloud, 晴辰助手, AI Assistant, 消息渠道, QQ 机器人, Telegram, Discord, 实时聊天, AI 对话, 流式响应, 记忆管理, Agent 管理, 多 Agent, 网关配置, Gateway, 服务管理, 日志查看, 内网穿透, Cloudflare Tunnel, 系统诊断, WebSocket, 仪表盘, 监控, 配置管理, 私有部署, 本地部署, 自托管, AI 工具, AI 平台, 智能体平台, 人工智能, 深度学习, 自然语言处理, NLP, 模型调度, 模型切换, 备选模型, 开箱即用, 零代码, 低代码, admin panel, dashboard, open source AI, self-hosted AI, local AI, AI management, Docker 部署, 开发板, 树莓派, ARM, i18n, 多语言">
|
||||
<meta name="author" content="晴辰云 QingchenCloud">
|
||||
<meta name="robots" content="index, follow, max-snippet:-1, max-image-preview:large">
|
||||
<link rel="canonical" href="https://claw.qt.cool/">
|
||||
<meta property="og:title" content="ClawPanel - OpenClaw AI Agent 可视化管理面板 | 快速搭建你的 AI 智能体">
|
||||
<meta property="og:description" content="基于 Tauri v2 的跨平台桌面应用,为 OpenClaw AI Agent 提供可视化管理。内置 AI 助手支持工具调用,新增消息渠道管理与内置 QQ 机器人接入。开源免费。">
|
||||
<meta property="og:description" content="基于 Tauri v2 的跨平台桌面应用,为 OpenClaw AI Agent 提供可视化管理。内置晴辰助手支持工具调用,晴辰云 AI 接口一键接入,消息渠道管理与内置 QQ 机器人。开源免费,支持 11 种语言。">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:url" content="https://claw.qt.cool/">
|
||||
<meta property="og:site_name" content="ClawPanel">
|
||||
@@ -21,7 +21,7 @@
|
||||
<meta property="og:image:alt" content="ClawPanel 仪表盘">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="ClawPanel - OpenClaw AI Agent 可视化管理面板">
|
||||
<meta name="twitter:description" content="基于 Tauri v2 的跨平台桌面应用。支持消息渠道管理、内置 QQ 机器人、多模型配置与实时 AI 聊天。">
|
||||
<meta name="twitter:description" content="基于 Tauri v2 的跨平台桌面应用。内置晴辰助手与晴辰云 AI 接口,支持消息渠道管理、QQ 机器人、多模型配置与实时 AI 聊天。开源免费。">
|
||||
<meta name="twitter:image" content="https://claw.qt.cool/00.png">
|
||||
<link rel="icon" href="./logo.png" type="image/png">
|
||||
<script type="application/ld+json">
|
||||
@@ -31,7 +31,7 @@
|
||||
"name": "ClawPanel",
|
||||
"applicationCategory": "DeveloperApplication",
|
||||
"operatingSystem": "Windows, macOS, Linux",
|
||||
"description": "OpenClaw AI Agent 可视化管理面板,基于 Tauri v2 的跨平台桌面应用。支持仪表盘监控、多模型配置、消息渠道管理、内置 QQ 机器人、实时 AI 聊天、记忆管理、Agent 管理、网关配置、内网穿透等功能。",
|
||||
"description": "OpenClaw AI Agent 可视化管理面板,基于 Tauri v2 的跨平台桌面应用。内置晴辰助手支持工具调用,晴辰云 AI 接口一键接入。支持仪表盘监控、多模型配置、消息渠道管理、内置 QQ 机器人、实时 AI 聊天、记忆管理、Agent 管理、网关配置、内网穿透等功能。支持 11 种语言。",
|
||||
"url": "https://claw.qt.cool/",
|
||||
"downloadUrl": "https://github.com/qingchencloud/clawpanel/releases/latest",
|
||||
"softwareVersion": "0.9.8",
|
||||
@@ -47,7 +47,7 @@
|
||||
"priceCurrency": "CNY"
|
||||
},
|
||||
"screenshot": "https://claw.qt.cool/00.png",
|
||||
"keywords": "OpenClaw, AI Agent, 管理面板, Tauri, 跨平台, 开源, 免费, LLM, 多模型"
|
||||
"keywords": "OpenClaw, AI Agent, 管理面板, Tauri, 跨平台, 开源, 免费, LLM, 多模型, 晴辰云, 晴辰助手, Discord"
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
@@ -648,7 +648,7 @@
|
||||
<svg viewBox="0 0 24 24" fill="currentColor" style="width:16px;height:16px"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z"/></svg>
|
||||
Discussions
|
||||
</a>
|
||||
<a href="https://yb.tencent.com/gp/i/LsvIw7mdR7Lb" target="_blank" rel="noopener" class="community-link">
|
||||
<a href="https://yb.tencent.com/gp/i/IIGXzcMcdh84" target="_blank" rel="noopener" class="community-link">
|
||||
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="width:16px;height:16px"><circle cx="12" cy="12" r="10"/><path d="M8 12l2 2 4-4"/></svg>
|
||||
元宝派
|
||||
</a>
|
||||
@@ -741,20 +741,20 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- AI 助手设置 — 模型配置 + 公益 AI 接口 -->
|
||||
<!-- AI 助手设置 — 模型配置 + 晴辰云 AI 接口 -->
|
||||
<div class="showcase-row">
|
||||
<div>
|
||||
<div class="reveal showcase-tag" style="color:#f43f5e;background:rgba(244,63,94,0.1)"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 003.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 00-3.09 3.09z"/><path d="M18.259 8.715L18 9.75l-.259-1.035a3.375 3.375 0 00-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 002.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 002.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 00-2.456 2.456z"/></svg> 开箱即用</div>
|
||||
<h3 class="reveal showcase-title">公益 AI 接口 — 零成本开始</h3>
|
||||
<p class="reveal showcase-desc">内置<strong>公益 AI 接口计划</strong>,GPT-5 全系列模型免费使用,Token 费用由项目组内部承担。选择模型、一键接入,无需注册、无需付费。也支持接入任意 OpenAI 兼容 API。</p>
|
||||
<h3 class="reveal showcase-title">晴辰云 AI 接口 — 签到领额度</h3>
|
||||
<p class="reveal showcase-desc">内置<strong>晴辰云 AI 接口</strong>,每日签到可领取测试额度,邀请好友可获得更多。选择模型、一键接入,快速开始使用。也支持接入任意 OpenAI 兼容 API。</p>
|
||||
<ul class="reveal showcase-list">
|
||||
<li><span class="check">✓</span> 公益接口一键接入,零门槛</li>
|
||||
<li><span class="check">✓</span> 晴辰云接口一键接入</li>
|
||||
<li><span class="check">✓</span> GPT-5 全系列模型可选</li>
|
||||
<li><span class="check">✓</span> 兼容 Chat Completions & Responses API</li>
|
||||
<li><span class="check">✓</span> 独立配置,无需安装 OpenClaw</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="reveal screenshot-frame" onclick="openLightbox('./02.png')"><img src="./02.png" alt="AI 助手设置 — 公益 AI 接口一键接入" loading="lazy"></div>
|
||||
<div class="reveal screenshot-frame" onclick="openLightbox('./02.png')"><img src="./02.png" alt="AI 助手设置 — 晴辰云 AI 接口一键接入" loading="lazy"></div>
|
||||
</div>
|
||||
|
||||
<!-- AI 助手人设 — Agent 灵魂 -->
|
||||
@@ -778,7 +778,7 @@
|
||||
<div>
|
||||
<div class="reveal showcase-tag c-indigo" style="background:var(--accent-10)"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg> 核心功能</div>
|
||||
<h3 class="reveal showcase-title">实时聊天 — 多模型流式对话</h3>
|
||||
<p class="reveal showcase-desc">WebSocket 直连 Gateway,流式响应逐字显示。自动列出所有已配置模型(含公益接口),支持图片附件、Markdown 渲染和快捷指令。</p>
|
||||
<p class="reveal showcase-desc">WebSocket 直连 Gateway,流式响应逐字显示。自动列出所有已配置模型(含晴辰云 AI 接口),支持图片附件、Markdown 渲染和快捷指令。</p>
|
||||
<ul class="reveal showcase-list">
|
||||
<li><span class="check">✓</span> 多 Provider 模型自动聚合</li>
|
||||
<li><span class="check">✓</span> 多会话管理与历史记录</li>
|
||||
@@ -795,9 +795,9 @@
|
||||
<div>
|
||||
<div class="reveal showcase-tag" style="color:#a855f7;background:rgba(168,85,247,0.1)"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/></svg> 配置中心</div>
|
||||
<h3 class="reveal showcase-title">多服务商统一管理</h3>
|
||||
<p class="reveal showcase-desc">OpenAI、公益接口、DeepSeek、Kimi 等多家服务商统一管理。内置公益 AI 接口一键添加全部模型。可视化主模型 + 备选自动切换,批量测试连通性。</p>
|
||||
<p class="reveal showcase-desc">OpenAI、晴辰云 AI、DeepSeek、Kimi 等多家服务商统一管理。内置晴辰云 AI 接口一键添加全部模型。可视化主模型 + 备选自动切换,批量测试连通性。</p>
|
||||
<ul class="reveal showcase-list">
|
||||
<li><span class="check">✓</span> 公益接口一键添加全部模型</li>
|
||||
<li><span class="check">✓</span> 晴辰云接口一键添加全部模型</li>
|
||||
<li><span class="check">✓</span> 批量连通性测试 & 延迟检测</li>
|
||||
<li><span class="check">✓</span> 主模型 + 备选自动切换</li>
|
||||
<li><span class="check">✓</span> 拖拽排序 & 实时保存</li>
|
||||
@@ -1191,18 +1191,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="reveal" style="margin-top:40px;max-width:680px;margin-left:auto;margin-right:auto;border-radius:16px;background:linear-gradient(135deg,rgba(99,102,241,0.08),rgba(168,85,247,0.08));border:1px solid rgba(99,102,241,0.15);padding:28px 32px;text-align:center">
|
||||
<h3 style="font-size:18px;font-weight:700;margin-bottom:8px">⚡ OpenClaw 独立安装包<span style="font-size:12px;background:var(--accent);color:#fff;padding:2px 8px;border-radius:20px;margin-left:8px;vertical-align:2px">零依赖</span></h3>
|
||||
<p style="font-size:14px;color:var(--text-s);margin-bottom:16px">不想折腾 Node.js 环境?下载独立安装包,<strong>内置运行时,解压即用</strong>。支持 Windows / macOS / Linux / 树莓派。</p>
|
||||
<div style="display:flex;gap:12px;justify-content:center;flex-wrap:wrap">
|
||||
<a href="https://github.com/qingchencloud/openclaw-standalone/releases/latest" target="_blank" rel="noopener" class="btn btn-primary" style="font-size:14px;padding:10px 20px">
|
||||
<svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" width="16" height="16" style="display:inline;vertical-align:-3px;margin-right:4px"><path d="M12 15V3m0 12l-4-4m4 4l4-4M2 17l.621 2.485A2 2 0 004.561 21h14.878a2 2 0 001.94-1.515L22 17"/></svg>
|
||||
下载独立安装包
|
||||
</a>
|
||||
<a href="https://github.com/qingchencloud/openclaw-standalone" target="_blank" rel="noopener" class="btn btn-outline" style="font-size:14px;padding:10px 20px">GitHub 项目</a>
|
||||
</div>
|
||||
<p style="font-size:12px;color:var(--text-t);margin-top:12px">ClawPanel 安装 OpenClaw 时会自动优先使用独立安装包,无需手动下载</p>
|
||||
</div>
|
||||
<div class="reveal download-note" style="text-align:center">
|
||||
<p>查看 <a href="https://github.com/qingchencloud/clawpanel/releases" target="_blank" rel="noopener">所有版本</a> · 需要帮助?阅读 <a href="https://github.com/qingchencloud/clawpanel#readme" target="_blank" rel="noopener">安装文档</a></p>
|
||||
<p style="margin-top:12px"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="display:inline;vertical-align:-2px;opacity:0.7"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg> 国内网络下载慢?加入 <a href="https://qt.cool/c/OpenClaw" target="_blank" rel="noopener">QQ 群</a> 或 <a href="https://qt.cool/c/OpenClawWx" target="_blank" rel="noopener">微信群</a> 获取安装包直传</p>
|
||||
@@ -1210,33 +1198,33 @@
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- ══════════════ 公益 AI 接口计划 ══════════════ -->
|
||||
<!-- ══════════════ 晴辰云 AI 接口 ══════════════ -->
|
||||
<section id="ai-plan" class="section" style="padding-top:64px;padding-bottom:64px">
|
||||
<div class="grid-bg"></div>
|
||||
<div class="container" style="position:relative;z-index:10">
|
||||
<div class="section-header">
|
||||
<h2 class="reveal section-title"><svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="display:inline;vertical-align:-6px;margin-right:4px;color:var(--accent)"><path d="M20 12v10H4V12"/><path d="M2 7h20v5H2z"/><path d="M12 22V7"/><path d="M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z"/><path d="M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z"/></svg> <span class="gradient-text">公益 AI 接口计划</span></h2>
|
||||
<p class="reveal section-desc">Token 费用?我们帮你出了。</p>
|
||||
<h2 class="reveal section-title"><svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="display:inline;vertical-align:-6px;margin-right:4px;color:var(--accent)"><path d="M9.813 15.904L9 18.75l-.813-2.846a4.5 4.5 0 00-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 003.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 003.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 00-3.09 3.09z"/><path d="M18.259 8.715L18 9.75l-.259-1.035a3.375 3.375 0 00-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 002.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 002.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 00-2.456 2.456z"/></svg> <span class="gradient-text">晴辰云 AI 接口</span></h2>
|
||||
<p class="reveal section-desc">内部技术测试平台,签到领额度,邀请得更多</p>
|
||||
</div>
|
||||
<div class="reveal" style="max-width:800px;margin:0 auto;border-radius:20px;background:linear-gradient(135deg,#0f0c29 0%,#302b63 50%,#24243e 100%);color:#fff;position:relative;overflow:hidden;box-shadow:0 8px 40px rgba(48,43,99,0.3)">
|
||||
<div style="position:absolute;top:-60px;right:-60px;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(99,102,241,0.15) 0%,transparent 70%);pointer-events:none"></div>
|
||||
<div style="position:absolute;bottom:-40px;left:-40px;width:150px;height:150px;border-radius:50%;background:radial-gradient(circle,rgba(168,85,247,0.1) 0%,transparent 70%);pointer-events:none"></div>
|
||||
<div style="padding:40px 48px;position:relative">
|
||||
<div style="font-size:15px;color:rgba(255,255,255,0.8);line-height:1.9;margin-bottom:24px">
|
||||
<p style="margin-bottom:12px">ClawPanel 公益 AI 接口测试计划已开放。<strong style="color:#a78bfa">调用成本由项目组内部承担</strong>,用户无需注册、无需付费。</p>
|
||||
<p style="margin-bottom:12px">支持 GPT-5 全系列模型,兼容 OpenAI <code style="background:rgba(255,255,255,0.1);padding:2px 6px;border-radius:4px;font-size:13px">/v1/chat/completions</code> 和 <code style="background:rgba(255,255,255,0.1);padding:2px 6px;border-radius:4px;font-size:13px">/v1/responses</code> 接口。</p>
|
||||
<p style="margin-bottom:12px">晴辰云 AI 接口是面向部分用户开放的<strong style="color:#a78bfa">内部技术测试平台</strong>。每日签到可领取测试额度,邀请好友可获得更多。</p>
|
||||
<p style="margin-bottom:12px">兼容 OpenAI <code style="background:rgba(255,255,255,0.1);padding:2px 6px;border-radius:4px;font-size:13px">/v1/chat/completions</code> 和 <code style="background:rgba(255,255,255,0.1);padding:2px 6px;border-radius:4px;font-size:13px">/v1/responses</code> 接口,可无缝对接 OpenClaw。</p>
|
||||
<p>在 ClawPanel 内置助手设置中,选择模型 → 点击「测试」→「一键接入」即可开始使用。如需独立密钥,可前往活动站签到领取。</p>
|
||||
</div>
|
||||
<div style="display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:24px">
|
||||
<div style="background:rgba(255,255,255,0.06);border-radius:12px;padding:16px;text-align:center;border:1px solid rgba(255,255,255,0.08)">
|
||||
<div style="margin-bottom:6px"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#a78bfa" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z"/><path d="m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z"/><path d="M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0"/><path d="M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5"/></svg></div>
|
||||
<div style="font-weight:700;font-size:14px;margin-bottom:4px">GPT-5 全系列</div>
|
||||
<div style="font-size:12px;color:rgba(255,255,255,0.5)">10+ 模型开箱即用</div>
|
||||
<div style="margin-bottom:6px"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#a78bfa" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M8 12l2 2 4-4"/></svg></div>
|
||||
<div style="font-weight:700;font-size:14px;margin-bottom:4px">签到领额度</div>
|
||||
<div style="font-size:12px;color:rgba(255,255,255,0.5)">每日签到 + 邀请好友</div>
|
||||
</div>
|
||||
<div style="background:rgba(255,255,255,0.06);border-radius:12px;padding:16px;text-align:center;border:1px solid rgba(255,255,255,0.08)">
|
||||
<div style="margin-bottom:6px"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#a78bfa" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8"/><path d="M12 18V6"/></svg></div>
|
||||
<div style="font-weight:700;font-size:14px;margin-bottom:4px">费用全包</div>
|
||||
<div style="font-size:12px;color:rgba(255,255,255,0.5)">Token 成本项目组承担</div>
|
||||
<div style="margin-bottom:6px"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#a78bfa" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/></svg></div>
|
||||
<div style="font-weight:700;font-size:14px;margin-bottom:4px">OpenAI 兼容</div>
|
||||
<div style="font-size:12px;color:rgba(255,255,255,0.5)">无缝对接 OpenClaw</div>
|
||||
</div>
|
||||
<div style="background:rgba(255,255,255,0.06);border-radius:12px;padding:16px;text-align:center;border:1px solid rgba(255,255,255,0.08)">
|
||||
<div style="margin-bottom:6px"><svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="#a78bfa" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="m21 2-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0 3 3L22 7l-3-3m-3.5 3.5L19 4"/></svg></div>
|
||||
@@ -1244,10 +1232,13 @@
|
||||
<div style="font-size:12px;color:rgba(255,255,255,0.5)">签到即可免费领取</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display:flex;flex-wrap:wrap;gap:12px;justify-content:center">
|
||||
<a href="https://gpt.qt.cool/checkin" target="_blank" rel="noopener" style="display:inline-flex;align-items:center;gap:8px;padding:10px 24px;border-radius:12px;background:linear-gradient(135deg,#6366f1,#a855f7);color:#fff;font-weight:600;font-size:14px;text-decoration:none;box-shadow:0 4px 16px rgba(99,102,241,0.4);transition:transform 0.2s"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M8 12l2 2 4-4"/></svg> 签到领密钥</a>
|
||||
<div style="display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-bottom:20px">
|
||||
<a href="https://gpt.qt.cool/checkin" target="_blank" rel="noopener" style="display:inline-flex;align-items:center;gap:8px;padding:10px 24px;border-radius:12px;background:linear-gradient(135deg,#6366f1,#a855f7);color:#fff;font-weight:600;font-size:14px;text-decoration:none;box-shadow:0 4px 16px rgba(99,102,241,0.4);transition:transform 0.2s"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M8 12l2 2 4-4"/></svg> 签到领额度</a>
|
||||
<a href="https://gpt.qt.cool/user" target="_blank" rel="noopener" style="display:inline-flex;align-items:center;gap:8px;padding:10px 24px;border-radius:12px;border:1px solid rgba(255,255,255,0.2);color:#fff;font-size:14px;font-weight:500;text-decoration:none;transition:all 0.2s"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3v18h18"/><path d="m19 9-5 5-4-4-3 3"/></svg> 用量查询</a>
|
||||
<a href="https://gpt.qt.cool/" target="_blank" rel="noopener" style="display:inline-flex;align-items:center;gap:8px;padding:10px 24px;border-radius:12px;border:1px solid rgba(255,255,255,0.2);color:#fff;font-size:14px;font-weight:500;text-decoration:none;transition:all 0.2s"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M2 12h20"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg> GPT-AI 网关</a>
|
||||
<a href="https://gpt.qt.cool/" target="_blank" rel="noopener" style="display:inline-flex;align-items:center;gap:8px;padding:10px 24px;border-radius:12px;border:1px solid rgba(255,255,255,0.2);color:#fff;font-size:14px;font-weight:500;text-decoration:none;transition:all 0.2s"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M2 12h20"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg> 晴辰云 AI</a>
|
||||
</div>
|
||||
<div style="font-size:12px;color:rgba(255,255,255,0.4);line-height:1.7;border-top:1px solid rgba(255,255,255,0.08);padding-top:16px">
|
||||
<p>⚠️ 本平台仅提供技术测试,禁止用于违法违规、绕过安全机制等用途。模型/接口以实际页面展示为准,可能灰度或版本切换。请妥善保管 API Key,具体规则以平台最新公告为准。</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1303,6 +1294,20 @@
|
||||
<a href="https://discord.gg/U9AttmsNHh" target="_blank" rel="noopener" class="footer-link">Discord</a>
|
||||
<a href="https://qt.cool" target="_blank" rel="noopener" class="footer-link">晴辰云</a>
|
||||
</div>
|
||||
<div class="footer-links" style="margin-top:8px;font-size:12px;gap:12px">
|
||||
<span style="color:var(--text-t)">🌐</span>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/blob/main/README.md" class="footer-link">中文</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/blob/main/README.en.md" class="footer-link">English</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/blob/main/README.ja.md" class="footer-link">日本語</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/blob/main/README.ko.md" class="footer-link">한국어</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/blob/main/README.zh-TW.md" class="footer-link">繁體中文</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/blob/main/README.vi.md" class="footer-link">Tiếng Việt</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/blob/main/README.es.md" class="footer-link">Español</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/blob/main/README.pt.md" class="footer-link">Português</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/blob/main/README.ru.md" class="footer-link">Русский</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/blob/main/README.fr.md" class="footer-link">Français</a>
|
||||
<a href="https://github.com/qingchencloud/clawpanel/blob/main/README.de.md" class="footer-link">Deutsch</a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
|
||||
47
scripts/gen-extra-langs.cjs
Normal file
47
scripts/gen-extra-langs.cjs
Normal file
@@ -0,0 +1,47 @@
|
||||
/**
|
||||
* Generate vi/es/pt/ru/fr/de locale JSON files
|
||||
* Base: en.json → apply translations → write {lang}.json
|
||||
*/
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
const LOCALES = path.resolve(__dirname, '../src/locales')
|
||||
const PATCHES = path.resolve(__dirname, 'translations')
|
||||
const en = JSON.parse(fs.readFileSync(path.join(LOCALES, 'en.json'), 'utf8'))
|
||||
|
||||
const LANGS = ['vi', 'es', 'pt', 'ru', 'fr', 'de']
|
||||
|
||||
function clone(o) { return JSON.parse(JSON.stringify(o)) }
|
||||
|
||||
function loadPatches(dir) {
|
||||
if (!fs.existsSync(dir)) return {}
|
||||
const merged = {}
|
||||
for (const f of fs.readdirSync(dir).filter(x => x.endsWith('.json'))) {
|
||||
const mod = f.replace('.json', '')
|
||||
merged[mod] = JSON.parse(fs.readFileSync(path.join(dir, f), 'utf8'))
|
||||
}
|
||||
return merged
|
||||
}
|
||||
|
||||
function applyTranslations(target, dict) {
|
||||
for (const [section, entries] of Object.entries(dict)) {
|
||||
if (!target[section]) continue
|
||||
for (const [key, val] of Object.entries(entries)) {
|
||||
if (target[section][key] !== undefined) {
|
||||
target[section][key] = val
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (const lang of LANGS) {
|
||||
const result = clone(en)
|
||||
const patchDir = path.join(PATCHES, lang)
|
||||
const patches = loadPatches(patchDir)
|
||||
applyTranslations(result, patches)
|
||||
const outPath = path.join(LOCALES, `${lang}.json`)
|
||||
fs.writeFileSync(outPath, JSON.stringify(result, null, 2) + '\n', 'utf8')
|
||||
const patchCount = Object.keys(patches).length
|
||||
console.log(`✓ ${lang}.json generated (${patchCount} patch modules applied)`)
|
||||
}
|
||||
console.log(' Missing keys fallback to English')
|
||||
54
scripts/gen-ja-ko.cjs
Normal file
54
scripts/gen-ja-ko.cjs
Normal file
@@ -0,0 +1,54 @@
|
||||
/**
|
||||
* Generate ja.json and ko.json by applying translation dictionaries
|
||||
* to the en.json structure. Missing translations fallback to English.
|
||||
* Run: node scripts/gen-ja-ko.cjs
|
||||
*/
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
const LOCALES = path.resolve(__dirname, '../src/locales')
|
||||
const en = JSON.parse(fs.readFileSync(path.join(LOCALES, 'en.json'), 'utf8'))
|
||||
|
||||
// Deep clone helper
|
||||
const clone = o => JSON.parse(JSON.stringify(o))
|
||||
|
||||
// Apply translation dict to target (mutates target)
|
||||
function applyTranslations(target, dict) {
|
||||
for (const [section, keys] of Object.entries(dict)) {
|
||||
if (!target[section]) continue
|
||||
for (const [key, val] of Object.entries(keys)) {
|
||||
if (target[section][key] !== undefined && val) {
|
||||
target[section][key] = val
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Load translation patches from separate files
|
||||
const jaPatches = path.join(__dirname, 'translations', 'ja')
|
||||
const koPatches = path.join(__dirname, 'translations', 'ko')
|
||||
|
||||
function loadPatches(dir) {
|
||||
if (!fs.existsSync(dir)) return {}
|
||||
const result = {}
|
||||
for (const file of fs.readdirSync(dir).filter(f => f.endsWith('.json'))) {
|
||||
const section = file.replace('.json', '')
|
||||
result[section] = JSON.parse(fs.readFileSync(path.join(dir, file), 'utf8'))
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
// Generate ja.json
|
||||
const ja = clone(en)
|
||||
applyTranslations(ja, loadPatches(jaPatches))
|
||||
fs.writeFileSync(path.join(LOCALES, 'ja.json'), JSON.stringify(ja, null, 2) + '\n', 'utf8')
|
||||
console.log('✓ ja.json generated')
|
||||
|
||||
// Generate ko.json
|
||||
const ko = clone(en)
|
||||
applyTranslations(ko, loadPatches(koPatches))
|
||||
fs.writeFileSync(path.join(LOCALES, 'ko.json'), JSON.stringify(ko, null, 2) + '\n', 'utf8')
|
||||
console.log('✓ ko.json generated')
|
||||
|
||||
console.log(' Translations applied from scripts/translations/{ja,ko}/*.json')
|
||||
console.log(' Missing keys fallback to English')
|
||||
294
scripts/gen-patches-6lang.cjs
Normal file
294
scripts/gen-patches-6lang.cjs
Normal file
@@ -0,0 +1,294 @@
|
||||
/**
|
||||
* Generate translation patch files for vi/es/pt/ru/fr/de
|
||||
* Writes scripts/translations/{lang}/{module}.json
|
||||
*/
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
const OUTDIR = path.resolve(__dirname, 'translations')
|
||||
|
||||
function w(lang, mod, data) {
|
||||
const dir = path.join(OUTDIR, lang)
|
||||
if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true })
|
||||
fs.writeFileSync(path.join(dir, mod + '.json'), JSON.stringify(data, null, 2))
|
||||
}
|
||||
|
||||
const LANGS = ['vi', 'es', 'pt', 'ru', 'fr', 'de']
|
||||
|
||||
// ── toast ──
|
||||
const toast = {
|
||||
vi: { copySuccess: 'Đã sao chép', copyFailed: 'Sao chép thất bại' },
|
||||
es: { copySuccess: 'Copiado al portapapeles', copyFailed: 'Error al copiar' },
|
||||
pt: { copySuccess: 'Copiado', copyFailed: 'Falha ao copiar' },
|
||||
ru: { copySuccess: 'Скопировано', copyFailed: 'Ошибка копирования' },
|
||||
fr: { copySuccess: 'Copié', copyFailed: 'Échec de la copie' },
|
||||
de: { copySuccess: 'Kopiert', copyFailed: 'Kopieren fehlgeschlagen' },
|
||||
}
|
||||
|
||||
// ── modal ──
|
||||
const modal = {
|
||||
vi: { confirmTitle: 'Xác nhận', confirmOk: 'Đồng ý', confirmCancel: 'Hủy' },
|
||||
es: { confirmTitle: 'Confirmar', confirmOk: 'Aceptar', confirmCancel: 'Cancelar' },
|
||||
pt: { confirmTitle: 'Confirmar', confirmOk: 'OK', confirmCancel: 'Cancelar' },
|
||||
ru: { confirmTitle: 'Подтвердите', confirmOk: 'ОК', confirmCancel: 'Отмена' },
|
||||
fr: { confirmTitle: 'Confirmer', confirmOk: 'OK', confirmCancel: 'Annuler' },
|
||||
de: { confirmTitle: 'Bestätigen', confirmOk: 'OK', confirmCancel: 'Abbrechen' },
|
||||
}
|
||||
|
||||
// ── instance ──
|
||||
const instance = {
|
||||
vi: { local: 'Cục bộ', remote: 'Từ xa', docker: 'Docker', addInstance: 'Thêm instance', addRemote: 'Thêm instance từ xa', nameLabel: 'Tên', endpointLabel: 'Địa chỉ panel', adding: 'Đang thêm...', current: 'Hiện tại' },
|
||||
es: { local: 'Local', remote: 'Remoto', docker: 'Docker', addInstance: 'Agregar instancia', addRemote: 'Agregar instancia remota', nameLabel: 'Nombre', endpointLabel: 'Dirección del panel', adding: 'Agregando...', current: 'Actual' },
|
||||
pt: { local: 'Local', remote: 'Remoto', docker: 'Docker', addInstance: 'Adicionar instância', addRemote: 'Adicionar instância remota', nameLabel: 'Nome', endpointLabel: 'Endereço do painel', adding: 'Adicionando...', current: 'Atual' },
|
||||
ru: { local: 'Локальный', remote: 'Удалённый', docker: 'Docker', addInstance: 'Добавить экземпляр', addRemote: 'Добавить удалённый', nameLabel: 'Имя', endpointLabel: 'Адрес панели', adding: 'Добавление...', current: 'Текущий' },
|
||||
fr: { local: 'Local', remote: 'Distant', docker: 'Docker', addInstance: 'Ajouter une instance', addRemote: 'Ajouter une instance distante', nameLabel: 'Nom', endpointLabel: 'Adresse du panneau', adding: 'Ajout...', current: 'Actuel' },
|
||||
de: { local: 'Lokal', remote: 'Remote', docker: 'Docker', addInstance: 'Instanz hinzufügen', addRemote: 'Remote-Instanz hinzufügen', nameLabel: 'Name', endpointLabel: 'Panel-Adresse', adding: 'Wird hinzugefügt...', current: 'Aktuell' },
|
||||
}
|
||||
|
||||
// ── logs ──
|
||||
const logs = {
|
||||
vi: { title: 'Nhật ký', desc: 'Xem nhật ký dịch vụ OpenClaw', tabGateway: 'Gateway', tabGatewayErr: 'Lỗi Gateway', tabGuardian: 'Guardian', tabBackup: 'Sao lưu', tabAudit: 'Kiểm toán', searchPlaceholder: 'Tìm kiếm...', refresh: 'Làm mới', autoScroll: 'Tự động cuộn', loading: 'Đang tải...', empty: 'Không có nhật ký', loadFailed: 'Tải thất bại', noResults: 'Không có kết quả', searchFailed: 'Tìm kiếm thất bại' },
|
||||
es: { title: 'Registros', desc: 'Ver registros del servicio OpenClaw', tabGateway: 'Gateway', tabGatewayErr: 'Errores Gateway', tabGuardian: 'Guardian', tabBackup: 'Respaldo', tabAudit: 'Auditoría', searchPlaceholder: 'Buscar...', refresh: 'Actualizar', autoScroll: 'Auto-desplazar', loading: 'Cargando...', empty: 'Sin registros', loadFailed: 'Error al cargar', noResults: 'Sin resultados', searchFailed: 'Búsqueda fallida' },
|
||||
pt: { title: 'Logs', desc: 'Ver logs do serviço OpenClaw', tabGateway: 'Gateway', tabGatewayErr: 'Erros Gateway', tabGuardian: 'Guardian', tabBackup: 'Backup', tabAudit: 'Auditoria', searchPlaceholder: 'Pesquisar...', refresh: 'Atualizar', autoScroll: 'Rolagem auto', loading: 'Carregando...', empty: 'Sem logs', loadFailed: 'Falha ao carregar', noResults: 'Sem resultados', searchFailed: 'Pesquisa falhou' },
|
||||
ru: { title: 'Журналы', desc: 'Просмотр журналов OpenClaw', tabGateway: 'Gateway', tabGatewayErr: 'Ошибки Gateway', tabGuardian: 'Guardian', tabBackup: 'Резервное копирование', tabAudit: 'Аудит', searchPlaceholder: 'Поиск...', refresh: 'Обновить', autoScroll: 'Автопрокрутка', loading: 'Загрузка...', empty: 'Нет записей', loadFailed: 'Ошибка загрузки', noResults: 'Ничего не найдено', searchFailed: 'Ошибка поиска' },
|
||||
fr: { title: 'Journaux', desc: 'Voir les journaux OpenClaw', tabGateway: 'Gateway', tabGatewayErr: 'Erreurs Gateway', tabGuardian: 'Guardian', tabBackup: 'Sauvegarde', tabAudit: 'Audit', searchPlaceholder: 'Rechercher...', refresh: 'Actualiser', autoScroll: 'Défilement auto', loading: 'Chargement...', empty: 'Aucun journal', loadFailed: 'Échec du chargement', noResults: 'Aucun résultat', searchFailed: 'Échec de la recherche' },
|
||||
de: { title: 'Protokolle', desc: 'OpenClaw-Protokolle anzeigen', tabGateway: 'Gateway', tabGatewayErr: 'Gateway-Fehler', tabGuardian: 'Guardian', tabBackup: 'Backup', tabAudit: 'Audit', searchPlaceholder: 'Suchen...', refresh: 'Aktualisieren', autoScroll: 'Auto-Scrollen', loading: 'Laden...', empty: 'Keine Protokolle', loadFailed: 'Laden fehlgeschlagen', noResults: 'Keine Ergebnisse', searchFailed: 'Suche fehlgeschlagen' },
|
||||
}
|
||||
|
||||
// ── sidebar ──
|
||||
const sidebar = {
|
||||
vi: { collapse: 'Thu gọn', closeMenu: 'Đóng menu', themeLight: 'Sáng', themeDark: 'Tối', sectionMonitor: 'Giám sát', sectionConfig: 'Cấu hình', sectionData: 'Dữ liệu', sectionExtension: 'Mở rộng', dashboard: 'Bảng điều khiển', assistant: 'Trợ lý', chat: 'Trò chuyện', services: 'Dịch vụ', logs: 'Nhật ký', models: 'Mô hình', agents: 'Agent', gateway: 'Gateway', channels: 'Kênh', communication: 'Truyền thông', security: 'Bảo mật', memory: 'Bộ nhớ', cron: 'Tác vụ định kỳ', usage: 'Sử dụng', skills: 'Skills', settings: 'Cài đặt', chatDebug: 'Chẩn đoán', about: 'Giới thiệu', setup: 'Thiết lập' },
|
||||
es: { collapse: 'Colapsar', closeMenu: 'Cerrar menú', themeLight: 'Claro', themeDark: 'Oscuro', sectionMonitor: 'Monitoreo', sectionConfig: 'Configuración', sectionData: 'Datos', sectionExtension: 'Extensiones', dashboard: 'Panel', assistant: 'Asistente', chat: 'Chat', services: 'Servicios', logs: 'Registros', models: 'Modelos', agents: 'Agentes', gateway: 'Gateway', channels: 'Canales', communication: 'Comunicación', security: 'Seguridad', memory: 'Memoria', cron: 'Tareas', usage: 'Uso', skills: 'Skills', settings: 'Configuración', chatDebug: 'Diagnóstico', about: 'Acerca de', setup: 'Configuración inicial' },
|
||||
pt: { collapse: 'Recolher', closeMenu: 'Fechar menu', themeLight: 'Claro', themeDark: 'Escuro', sectionMonitor: 'Monitoramento', sectionConfig: 'Configuração', sectionData: 'Dados', sectionExtension: 'Extensões', dashboard: 'Painel', assistant: 'Assistente', chat: 'Chat', services: 'Serviços', logs: 'Logs', models: 'Modelos', agents: 'Agentes', gateway: 'Gateway', channels: 'Canais', communication: 'Comunicação', security: 'Segurança', memory: 'Memória', cron: 'Tarefas', usage: 'Uso', skills: 'Skills', settings: 'Configurações', chatDebug: 'Diagnóstico', about: 'Sobre', setup: 'Configuração inicial' },
|
||||
ru: { collapse: 'Свернуть', closeMenu: 'Закрыть меню', themeLight: 'Светлая', themeDark: 'Тёмная', sectionMonitor: 'Мониторинг', sectionConfig: 'Настройки', sectionData: 'Данные', sectionExtension: 'Расширения', dashboard: 'Панель', assistant: 'Ассистент', chat: 'Чат', services: 'Сервисы', logs: 'Журналы', models: 'Модели', agents: 'Агенты', gateway: 'Gateway', channels: 'Каналы', communication: 'Коммуникации', security: 'Безопасность', memory: 'Память', cron: 'Планировщик', usage: 'Использование', skills: 'Skills', settings: 'Настройки', chatDebug: 'Диагностика', about: 'О программе', setup: 'Начальная настройка' },
|
||||
fr: { collapse: 'Réduire', closeMenu: 'Fermer le menu', themeLight: 'Clair', themeDark: 'Sombre', sectionMonitor: 'Surveillance', sectionConfig: 'Configuration', sectionData: 'Données', sectionExtension: 'Extensions', dashboard: 'Tableau de bord', assistant: 'Assistant', chat: 'Chat', services: 'Services', logs: 'Journaux', models: 'Modèles', agents: 'Agents', gateway: 'Gateway', channels: 'Canaux', communication: 'Communication', security: 'Sécurité', memory: 'Mémoire', cron: 'Tâches planifiées', usage: 'Utilisation', skills: 'Skills', settings: 'Paramètres', chatDebug: 'Diagnostic', about: 'À propos', setup: 'Configuration initiale' },
|
||||
de: { collapse: 'Einklappen', closeMenu: 'Menü schließen', themeLight: 'Hell', themeDark: 'Dunkel', sectionMonitor: 'Überwachung', sectionConfig: 'Konfiguration', sectionData: 'Daten', sectionExtension: 'Erweiterungen', dashboard: 'Dashboard', assistant: 'Assistent', chat: 'Live-Chat', services: 'Dienste', logs: 'Protokolle', models: 'Modelle', agents: 'Agenten', gateway: 'Gateway', channels: 'Kanäle', communication: 'Kommunikation', security: 'Sicherheit', memory: 'Speicher', cron: 'Geplante Aufgaben', usage: 'Nutzung', skills: 'Skills', settings: 'Einstellungen', chatDebug: 'Diagnose', about: 'Über', setup: 'Ersteinrichtung' },
|
||||
}
|
||||
|
||||
// Write small modules
|
||||
for (const mod of [
|
||||
['toast', toast], ['modal', modal], ['instance', instance],
|
||||
['logs', logs], ['sidebar', sidebar],
|
||||
]) {
|
||||
for (const lang of LANGS) {
|
||||
if (mod[1][lang]) w(lang, mod[0], mod[1][lang])
|
||||
}
|
||||
}
|
||||
|
||||
console.log('✓ Small modules: toast, modal, instance, logs, sidebar (6 langs)')
|
||||
|
||||
// ── dashboard (core keys) ──
|
||||
const dashboard = {
|
||||
vi: { title: 'Bảng điều khiển', desc: 'Tổng quan trạng thái OpenClaw', gateway: 'Gateway', notStarted: 'Chưa khởi động', versionLabel: 'Phiên bản', agentFleet: 'Đội Agent', defaultAgent: 'Mặc định', modelPool: 'Nhóm mô hình', baseServices: 'Dịch vụ cơ bản', controlUI: 'Control UI', restartGw: 'Khởi động lại Gateway', checkUpdate: 'Kiểm tra cập nhật', createBackup: 'Tạo bản sao lưu', recentLogs: 'Nhật ký gần đây', cliPath: 'Đường dẫn CLI', retry: 'Thử lại', notSet: 'Chưa đặt', port: 'Cổng', startBtn: 'Khởi động', stopBtn: 'Dừng', restartBtn: 'Khởi động lại', primaryModel: 'Mô hình chính', noLogs: 'Không có nhật ký', starting: 'Đang khởi động...', stopping: 'Đang dừng...', restarting: 'Đang khởi động lại...', checking: 'Đang kiểm tra...', upToDate: 'Đã cập nhật', backingUp: 'Đang sao lưu...', backupFail: 'Sao lưu thất bại' },
|
||||
es: { title: 'Panel', desc: 'Resumen del estado de OpenClaw', gateway: 'Gateway', notStarted: 'No iniciado', versionLabel: 'Versión', agentFleet: 'Flota de Agentes', defaultAgent: 'Predeterminado', modelPool: 'Pool de modelos', baseServices: 'Servicios base', controlUI: 'Control UI', restartGw: 'Reiniciar Gateway', checkUpdate: 'Buscar actualizaciones', createBackup: 'Crear respaldo', recentLogs: 'Registros recientes', cliPath: 'Ruta CLI', retry: 'Reintentar', notSet: 'No configurado', port: 'Puerto', startBtn: 'Iniciar', stopBtn: 'Detener', restartBtn: 'Reiniciar', primaryModel: 'Modelo principal', noLogs: 'Sin registros', starting: 'Iniciando...', stopping: 'Deteniendo...', restarting: 'Reiniciando...', checking: 'Verificando...', upToDate: 'Actualizado', backingUp: 'Respaldando...', backupFail: 'Respaldo fallido' },
|
||||
pt: { title: 'Painel', desc: 'Visão geral do estado do OpenClaw', gateway: 'Gateway', notStarted: 'Não iniciado', versionLabel: 'Versão', agentFleet: 'Frota de Agentes', defaultAgent: 'Padrão', modelPool: 'Pool de modelos', baseServices: 'Serviços base', controlUI: 'Control UI', restartGw: 'Reiniciar Gateway', checkUpdate: 'Verificar atualizações', createBackup: 'Criar backup', recentLogs: 'Logs recentes', cliPath: 'Caminho CLI', retry: 'Tentar novamente', notSet: 'Não definido', port: 'Porta', startBtn: 'Iniciar', stopBtn: 'Parar', restartBtn: 'Reiniciar', primaryModel: 'Modelo principal', noLogs: 'Sem logs', starting: 'Iniciando...', stopping: 'Parando...', restarting: 'Reiniciando...', checking: 'Verificando...', upToDate: 'Atualizado', backingUp: 'Fazendo backup...', backupFail: 'Falha no backup' },
|
||||
ru: { title: 'Панель', desc: 'Обзор состояния OpenClaw', gateway: 'Gateway', notStarted: 'Не запущен', versionLabel: 'Версия', agentFleet: 'Флот агентов', defaultAgent: 'По умолчанию', modelPool: 'Пул моделей', baseServices: 'Базовые сервисы', controlUI: 'Control UI', restartGw: 'Перезапустить Gateway', checkUpdate: 'Проверить обновления', createBackup: 'Создать резервную копию', recentLogs: 'Последние записи', cliPath: 'Путь CLI', retry: 'Повторить', notSet: 'Не задано', port: 'Порт', startBtn: 'Запустить', stopBtn: 'Остановить', restartBtn: 'Перезапустить', primaryModel: 'Основная модель', noLogs: 'Нет записей', starting: 'Запуск...', stopping: 'Остановка...', restarting: 'Перезапуск...', checking: 'Проверка...', upToDate: 'Актуально', backingUp: 'Резервное копирование...', backupFail: 'Ошибка резервного копирования' },
|
||||
fr: { title: 'Tableau de bord', desc: "Vue d'ensemble de l'état OpenClaw", gateway: 'Gateway', notStarted: 'Non démarré', versionLabel: 'Version', agentFleet: "Flotte d'Agents", defaultAgent: 'Par défaut', modelPool: 'Pool de modèles', baseServices: 'Services de base', controlUI: 'Control UI', restartGw: 'Redémarrer Gateway', checkUpdate: 'Vérifier les mises à jour', createBackup: 'Créer une sauvegarde', recentLogs: 'Journaux récents', cliPath: 'Chemin CLI', retry: 'Réessayer', notSet: 'Non défini', port: 'Port', startBtn: 'Démarrer', stopBtn: 'Arrêter', restartBtn: 'Redémarrer', primaryModel: 'Modèle principal', noLogs: 'Aucun journal', starting: 'Démarrage...', stopping: 'Arrêt...', restarting: 'Redémarrage...', checking: 'Vérification...', upToDate: 'À jour', backingUp: 'Sauvegarde...', backupFail: 'Échec de la sauvegarde' },
|
||||
de: { title: 'Dashboard', desc: 'OpenClaw-Statusübersicht', gateway: 'Gateway', notStarted: 'Nicht gestartet', versionLabel: 'Version', agentFleet: 'Agent-Flotte', defaultAgent: 'Standard', modelPool: 'Modell-Pool', baseServices: 'Basisdienste', controlUI: 'Control UI', restartGw: 'Gateway neustarten', checkUpdate: 'Updates prüfen', createBackup: 'Backup erstellen', recentLogs: 'Aktuelle Protokolle', cliPath: 'CLI-Pfad', retry: 'Wiederholen', notSet: 'Nicht gesetzt', port: 'Port', startBtn: 'Starten', stopBtn: 'Stoppen', restartBtn: 'Neustarten', primaryModel: 'Primäres Modell', noLogs: 'Keine Protokolle', starting: 'Wird gestartet...', stopping: 'Wird gestoppt...', restarting: 'Wird neugestartet...', checking: 'Wird geprüft...', upToDate: 'Aktuell', backingUp: 'Backup wird erstellt...', backupFail: 'Backup fehlgeschlagen' },
|
||||
}
|
||||
|
||||
// ── services (core keys) ──
|
||||
const services = {
|
||||
vi: { title: 'Quản lý dịch vụ', desc: 'Khởi động, dừng và giám sát dịch vụ OpenClaw', gatewayTitle: 'Dịch vụ Gateway', guardianTitle: 'Dịch vụ Guardian', status: 'Trạng thái', pid: 'PID', uptime: 'Thời gian hoạt động', port: 'Cổng', host: 'Máy chủ', start: 'Khởi động', stop: 'Dừng', restart: 'Khởi động lại', forceKill: 'Buộc dừng', viewLogs: 'Xem nhật ký', starting: 'Đang khởi động...', stopping: 'Đang dừng...', restarting: 'Đang khởi động lại...', loadFail: 'Tải trạng thái thất bại', healthCheck: 'Kiểm tra sức khỏe', healthOk: 'Hoạt động bình thường', healthFail: 'Không phản hồi' },
|
||||
es: { title: 'Gestión de servicios', desc: 'Iniciar, detener y monitorear servicios OpenClaw', gatewayTitle: 'Servicio Gateway', guardianTitle: 'Servicio Guardian', status: 'Estado', pid: 'PID', uptime: 'Tiempo activo', port: 'Puerto', host: 'Host', start: 'Iniciar', stop: 'Detener', restart: 'Reiniciar', forceKill: 'Forzar cierre', viewLogs: 'Ver registros', starting: 'Iniciando...', stopping: 'Deteniendo...', restarting: 'Reiniciando...', loadFail: 'Error al cargar estado', healthCheck: 'Verificación de salud', healthOk: 'Funcionando correctamente', healthFail: 'Sin respuesta' },
|
||||
pt: { title: 'Gestão de serviços', desc: 'Iniciar, parar e monitorar serviços OpenClaw', gatewayTitle: 'Serviço Gateway', guardianTitle: 'Serviço Guardian', status: 'Status', pid: 'PID', uptime: 'Tempo ativo', port: 'Porta', host: 'Host', start: 'Iniciar', stop: 'Parar', restart: 'Reiniciar', forceKill: 'Forçar encerramento', viewLogs: 'Ver logs', starting: 'Iniciando...', stopping: 'Parando...', restarting: 'Reiniciando...', loadFail: 'Falha ao carregar status', healthCheck: 'Verificação de saúde', healthOk: 'Funcionando normalmente', healthFail: 'Sem resposta' },
|
||||
ru: { title: 'Управление сервисами', desc: 'Запуск, остановка и мониторинг сервисов OpenClaw', gatewayTitle: 'Сервис Gateway', guardianTitle: 'Сервис Guardian', status: 'Статус', pid: 'PID', uptime: 'Время работы', port: 'Порт', host: 'Хост', start: 'Запустить', stop: 'Остановить', restart: 'Перезапустить', forceKill: 'Принудительное завершение', viewLogs: 'Смотреть журналы', starting: 'Запуск...', stopping: 'Остановка...', restarting: 'Перезапуск...', loadFail: 'Ошибка загрузки статуса', healthCheck: 'Проверка состояния', healthOk: 'Работает нормально', healthFail: 'Нет ответа' },
|
||||
fr: { title: 'Gestion des services', desc: 'Démarrer, arrêter et surveiller les services OpenClaw', gatewayTitle: 'Service Gateway', guardianTitle: 'Service Guardian', status: 'Statut', pid: 'PID', uptime: 'Temps de fonctionnement', port: 'Port', host: 'Hôte', start: 'Démarrer', stop: 'Arrêter', restart: 'Redémarrer', forceKill: 'Forcer la fermeture', viewLogs: 'Voir les journaux', starting: 'Démarrage...', stopping: 'Arrêt...', restarting: 'Redémarrage...', loadFail: 'Échec du chargement du statut', healthCheck: 'Vérification de santé', healthOk: 'Fonctionne normalement', healthFail: 'Pas de réponse' },
|
||||
de: { title: 'Dienstverwaltung', desc: 'OpenClaw-Dienste starten, stoppen und überwachen', gatewayTitle: 'Gateway-Dienst', guardianTitle: 'Guardian-Dienst', status: 'Status', pid: 'PID', uptime: 'Betriebszeit', port: 'Port', host: 'Host', start: 'Starten', stop: 'Stoppen', restart: 'Neustarten', forceKill: 'Erzwungen beenden', viewLogs: 'Protokolle ansehen', starting: 'Wird gestartet...', stopping: 'Wird gestoppt...', restarting: 'Wird neugestartet...', loadFail: 'Status laden fehlgeschlagen', healthCheck: 'Zustandsprüfung', healthOk: 'Läuft normal', healthFail: 'Keine Antwort' },
|
||||
}
|
||||
|
||||
// ── settings (core keys) ──
|
||||
const settings = {
|
||||
vi: { title: 'Cài đặt panel', desc: 'Quản lý cài đặt mạng, proxy và nguồn tải xuống', networkProxy: 'Proxy mạng', modelProxy: 'Proxy yêu cầu mô hình', npmRegistry: 'npm Registry', language: 'Ngôn ngữ hiển thị', languageHint: 'Chuyển đổi ngôn ngữ giao diện.', testProxy: 'Kiểm tra kết nối', clearProxy: 'Tắt proxy', resetDefault: 'Khôi phục mặc định', restarting: 'Đang khởi động lại...' },
|
||||
es: { title: 'Configuración del panel', desc: 'Gestionar configuración de red, proxy y fuentes de descarga', networkProxy: 'Proxy de red', modelProxy: 'Proxy de solicitudes de modelo', npmRegistry: 'npm Registry', language: 'Idioma de visualización', languageHint: 'Cambiar el idioma de la interfaz.', testProxy: 'Probar conexión', clearProxy: 'Desactivar proxy', resetDefault: 'Restaurar predeterminado', restarting: 'Reiniciando...' },
|
||||
pt: { title: 'Configurações do painel', desc: 'Gerenciar configurações de rede, proxy e fontes de download', networkProxy: 'Proxy de rede', modelProxy: 'Proxy de solicitações de modelo', npmRegistry: 'npm Registry', language: 'Idioma de exibição', languageHint: 'Alterar o idioma da interface.', testProxy: 'Testar conexão', clearProxy: 'Desativar proxy', resetDefault: 'Restaurar padrão', restarting: 'Reiniciando...' },
|
||||
ru: { title: 'Настройки панели', desc: 'Управление сетью, прокси и источниками загрузки', networkProxy: 'Сетевой прокси', modelProxy: 'Прокси для запросов моделей', npmRegistry: 'npm Registry', language: 'Язык интерфейса', languageHint: 'Переключить язык интерфейса.', testProxy: 'Проверить подключение', clearProxy: 'Отключить прокси', resetDefault: 'Восстановить по умолчанию', restarting: 'Перезапуск...' },
|
||||
fr: { title: 'Paramètres du panneau', desc: 'Gérer les paramètres réseau, proxy et sources de téléchargement', networkProxy: 'Proxy réseau', modelProxy: 'Proxy des requêtes de modèle', npmRegistry: 'npm Registry', language: "Langue d'affichage", languageHint: "Changer la langue de l'interface.", testProxy: 'Tester la connexion', clearProxy: 'Désactiver le proxy', resetDefault: 'Restaurer les paramètres par défaut', restarting: 'Redémarrage...' },
|
||||
de: { title: 'Panel-Einstellungen', desc: 'Netzwerk-, Proxy- und Download-Einstellungen verwalten', networkProxy: 'Netzwerk-Proxy', modelProxy: 'Modell-Anfrage-Proxy', npmRegistry: 'npm Registry', language: 'Anzeigesprache', languageHint: 'Sprache der Benutzeroberfläche wechseln.', testProxy: 'Verbindung testen', clearProxy: 'Proxy deaktivieren', resetDefault: 'Standard wiederherstellen', restarting: 'Wird neugestartet...' },
|
||||
}
|
||||
|
||||
// ── agents (core keys) ──
|
||||
const agents = {
|
||||
vi: { title: 'Quản lý Agent', desc: 'Tạo và quản lý OpenClaw Agent', addAgent: '+ Agent mới', noAgents: 'Không có Agent', loadFailed: 'Tải thất bại', default: 'Mặc định', backup: 'Sao lưu', edit: 'Sửa', delete: 'Xóa', notSet: 'Chưa đặt', addTitle: 'Agent mới', agentId: 'Agent ID', agentName: 'Tên', agentModel: 'Mô hình', created: 'Agent đã tạo', createFailed: 'Tạo thất bại', editTitle: 'Sửa Agent — {id}', updated: 'Đã cập nhật', updateFailed: 'Cập nhật thất bại', deleted: 'Đã xóa', deleteFailed: 'Xóa thất bại' },
|
||||
es: { title: 'Gestión de Agentes', desc: 'Crear y gestionar OpenClaw Agents', addAgent: '+ Nuevo Agent', noAgents: 'Sin Agentes', loadFailed: 'Error al cargar', default: 'Predeterminado', backup: 'Respaldo', edit: 'Editar', delete: 'Eliminar', notSet: 'No configurado', addTitle: 'Nuevo Agent', agentId: 'Agent ID', agentName: 'Nombre', agentModel: 'Modelo', created: 'Agent creado', createFailed: 'Error al crear', editTitle: 'Editar Agent — {id}', updated: 'Actualizado', updateFailed: 'Error al actualizar', deleted: 'Eliminado', deleteFailed: 'Error al eliminar' },
|
||||
pt: { title: 'Gestão de Agentes', desc: 'Criar e gerenciar OpenClaw Agents', addAgent: '+ Novo Agent', noAgents: 'Sem Agentes', loadFailed: 'Falha ao carregar', default: 'Padrão', backup: 'Backup', edit: 'Editar', delete: 'Excluir', notSet: 'Não definido', addTitle: 'Novo Agent', agentId: 'Agent ID', agentName: 'Nome', agentModel: 'Modelo', created: 'Agent criado', createFailed: 'Falha ao criar', editTitle: 'Editar Agent — {id}', updated: 'Atualizado', updateFailed: 'Falha ao atualizar', deleted: 'Excluído', deleteFailed: 'Falha ao excluir' },
|
||||
ru: { title: 'Управление агентами', desc: 'Создание и управление агентами OpenClaw', addAgent: '+ Новый агент', noAgents: 'Нет агентов', loadFailed: 'Ошибка загрузки', default: 'По умолчанию', backup: 'Резервная копия', edit: 'Редактировать', delete: 'Удалить', notSet: 'Не задано', addTitle: 'Новый агент', agentId: 'ID агента', agentName: 'Имя', agentModel: 'Модель', created: 'Агент создан', createFailed: 'Ошибка создания', editTitle: 'Редактировать агента — {id}', updated: 'Обновлено', updateFailed: 'Ошибка обновления', deleted: 'Удалён', deleteFailed: 'Ошибка удаления' },
|
||||
fr: { title: 'Gestion des Agents', desc: 'Créer et gérer les Agents OpenClaw', addAgent: '+ Nouvel Agent', noAgents: 'Aucun Agent', loadFailed: 'Échec du chargement', default: 'Par défaut', backup: 'Sauvegarde', edit: 'Modifier', delete: 'Supprimer', notSet: 'Non défini', addTitle: 'Nouvel Agent', agentId: 'ID Agent', agentName: 'Nom', agentModel: 'Modèle', created: 'Agent créé', createFailed: 'Échec de la création', editTitle: "Modifier l'Agent — {id}", updated: 'Mis à jour', updateFailed: 'Échec de la mise à jour', deleted: 'Supprimé', deleteFailed: 'Échec de la suppression' },
|
||||
de: { title: 'Agenten-Verwaltung', desc: 'OpenClaw-Agenten erstellen und verwalten', addAgent: '+ Neuer Agent', noAgents: 'Keine Agenten', loadFailed: 'Laden fehlgeschlagen', default: 'Standard', backup: 'Backup', edit: 'Bearbeiten', delete: 'Löschen', notSet: 'Nicht gesetzt', addTitle: 'Neuer Agent', agentId: 'Agent-ID', agentName: 'Name', agentModel: 'Modell', created: 'Agent erstellt', createFailed: 'Erstellen fehlgeschlagen', editTitle: 'Agent bearbeiten — {id}', updated: 'Aktualisiert', updateFailed: 'Aktualisierung fehlgeschlagen', deleted: 'Gelöscht', deleteFailed: 'Löschen fehlgeschlagen' },
|
||||
}
|
||||
|
||||
// ── gateway (core keys) ──
|
||||
const gateway = {
|
||||
vi: { title: 'Gateway', desc: 'Cấu hình và quản lý Gateway', status: 'Trạng thái', running: 'Đang chạy', stopped: 'Đã dừng', port: 'Cổng', saveConfig: 'Lưu cấu hình', saved: 'Đã lưu cấu hình Gateway', saveFailed: 'Lưu thất bại', restartRequired: 'Cần khởi động lại Gateway', restartNow: 'Khởi động lại ngay', configLoadFail: 'Tải cấu hình thất bại', pairingTitle: 'Ghép nối thiết bị', pairedDevices: 'Thiết bị đã ghép nối', noPairedDevices: 'Chưa có thiết bị ghép nối' },
|
||||
es: { title: 'Gateway', desc: 'Configurar y gestionar Gateway', status: 'Estado', running: 'Ejecutando', stopped: 'Detenido', port: 'Puerto', saveConfig: 'Guardar configuración', saved: 'Configuración de Gateway guardada', saveFailed: 'Error al guardar', restartRequired: 'Se requiere reiniciar Gateway', restartNow: 'Reiniciar ahora', configLoadFail: 'Error al cargar configuración', pairingTitle: 'Emparejamiento de dispositivos', pairedDevices: 'Dispositivos emparejados', noPairedDevices: 'Sin dispositivos emparejados' },
|
||||
pt: { title: 'Gateway', desc: 'Configurar e gerenciar Gateway', status: 'Status', running: 'Em execução', stopped: 'Parado', port: 'Porta', saveConfig: 'Salvar configuração', saved: 'Configuração do Gateway salva', saveFailed: 'Falha ao salvar', restartRequired: 'É necessário reiniciar o Gateway', restartNow: 'Reiniciar agora', configLoadFail: 'Falha ao carregar configuração', pairingTitle: 'Pareamento de dispositivos', pairedDevices: 'Dispositivos pareados', noPairedDevices: 'Nenhum dispositivo pareado' },
|
||||
ru: { title: 'Gateway', desc: 'Настройка и управление Gateway', status: 'Статус', running: 'Работает', stopped: 'Остановлен', port: 'Порт', saveConfig: 'Сохранить настройки', saved: 'Настройки Gateway сохранены', saveFailed: 'Ошибка сохранения', restartRequired: 'Требуется перезапуск Gateway', restartNow: 'Перезапустить сейчас', configLoadFail: 'Ошибка загрузки настроек', pairingTitle: 'Сопряжение устройств', pairedDevices: 'Сопряжённые устройства', noPairedDevices: 'Нет сопряжённых устройств' },
|
||||
fr: { title: 'Gateway', desc: 'Configurer et gérer Gateway', status: 'Statut', running: 'En cours', stopped: 'Arrêté', port: 'Port', saveConfig: 'Enregistrer la configuration', saved: 'Configuration Gateway enregistrée', saveFailed: 'Échec de la sauvegarde', restartRequired: 'Redémarrage de Gateway requis', restartNow: 'Redémarrer maintenant', configLoadFail: 'Échec du chargement de la configuration', pairingTitle: 'Appairage des appareils', pairedDevices: 'Appareils appairés', noPairedDevices: 'Aucun appareil appairé' },
|
||||
de: { title: 'Gateway', desc: 'Gateway konfigurieren und verwalten', status: 'Status', running: 'Läuft', stopped: 'Gestoppt', port: 'Port', saveConfig: 'Konfiguration speichern', saved: 'Gateway-Konfiguration gespeichert', saveFailed: 'Speichern fehlgeschlagen', restartRequired: 'Gateway-Neustart erforderlich', restartNow: 'Jetzt neustarten', configLoadFail: 'Konfiguration laden fehlgeschlagen', pairingTitle: 'Gerätekopplung', pairedDevices: 'Gekoppelte Geräte', noPairedDevices: 'Keine gekoppelten Geräte' },
|
||||
}
|
||||
|
||||
// ── models (core keys) ──
|
||||
const models = {
|
||||
vi: { title: 'Cấu hình mô hình', desc: 'Quản lý nhà cung cấp và mô hình AI', addProvider: '+ Thêm nhà cung cấp', noProviders: 'Không có nhà cung cấp', providerName: 'Tên nhà cung cấp', baseUrl: 'Base URL', apiKey: 'API Key', models: 'Mô hình', addModel: 'Thêm mô hình', saveProvider: 'Lưu', testConnection: 'Kiểm tra kết nối', testing: 'Đang kiểm tra...', testSuccess: 'Kết nối thành công', testFailed: 'Kết nối thất bại', fetchModels: 'Lấy danh sách mô hình', primaryModel: 'Mô hình chính', enabled: 'Đã bật', disabled: 'Đã tắt', loadFailed: 'Tải cấu hình thất bại' },
|
||||
es: { title: 'Configuración de modelos', desc: 'Gestionar proveedores y modelos de IA', addProvider: '+ Agregar proveedor', noProviders: 'Sin proveedores', providerName: 'Nombre del proveedor', baseUrl: 'Base URL', apiKey: 'API Key', models: 'Modelos', addModel: 'Agregar modelo', saveProvider: 'Guardar', testConnection: 'Probar conexión', testing: 'Probando...', testSuccess: 'Conexión exitosa', testFailed: 'Conexión fallida', fetchModels: 'Obtener lista de modelos', primaryModel: 'Modelo principal', enabled: 'Habilitado', disabled: 'Deshabilitado', loadFailed: 'Error al cargar configuración' },
|
||||
pt: { title: 'Configuração de modelos', desc: 'Gerenciar provedores e modelos de IA', addProvider: '+ Adicionar provedor', noProviders: 'Sem provedores', providerName: 'Nome do provedor', baseUrl: 'Base URL', apiKey: 'API Key', models: 'Modelos', addModel: 'Adicionar modelo', saveProvider: 'Salvar', testConnection: 'Testar conexão', testing: 'Testando...', testSuccess: 'Conexão bem-sucedida', testFailed: 'Conexão falhou', fetchModels: 'Obter lista de modelos', primaryModel: 'Modelo principal', enabled: 'Ativado', disabled: 'Desativado', loadFailed: 'Falha ao carregar configuração' },
|
||||
ru: { title: 'Настройка моделей', desc: 'Управление провайдерами и моделями ИИ', addProvider: '+ Добавить провайдера', noProviders: 'Нет провайдеров', providerName: 'Имя провайдера', baseUrl: 'Base URL', apiKey: 'API Key', models: 'Модели', addModel: 'Добавить модель', saveProvider: 'Сохранить', testConnection: 'Проверить подключение', testing: 'Проверка...', testSuccess: 'Подключение успешно', testFailed: 'Ошибка подключения', fetchModels: 'Получить список моделей', primaryModel: 'Основная модель', enabled: 'Включено', disabled: 'Отключено', loadFailed: 'Ошибка загрузки настроек' },
|
||||
fr: { title: 'Configuration des modèles', desc: 'Gérer les fournisseurs et modèles IA', addProvider: '+ Ajouter un fournisseur', noProviders: 'Aucun fournisseur', providerName: 'Nom du fournisseur', baseUrl: 'Base URL', apiKey: 'API Key', models: 'Modèles', addModel: 'Ajouter un modèle', saveProvider: 'Enregistrer', testConnection: 'Tester la connexion', testing: 'Test en cours...', testSuccess: 'Connexion réussie', testFailed: 'Connexion échouée', fetchModels: 'Obtenir la liste des modèles', primaryModel: 'Modèle principal', enabled: 'Activé', disabled: 'Désactivé', loadFailed: 'Échec du chargement de la configuration' },
|
||||
de: { title: 'Modell-Konfiguration', desc: 'KI-Anbieter und Modelle verwalten', addProvider: '+ Anbieter hinzufügen', noProviders: 'Keine Anbieter', providerName: 'Anbietername', baseUrl: 'Base URL', apiKey: 'API Key', models: 'Modelle', addModel: 'Modell hinzufügen', saveProvider: 'Speichern', testConnection: 'Verbindung testen', testing: 'Test läuft...', testSuccess: 'Verbindung erfolgreich', testFailed: 'Verbindung fehlgeschlagen', fetchModels: 'Modellliste abrufen', primaryModel: 'Primäres Modell', enabled: 'Aktiviert', disabled: 'Deaktiviert', loadFailed: 'Konfiguration laden fehlgeschlagen' },
|
||||
}
|
||||
|
||||
// ── security ──
|
||||
const security = {
|
||||
vi: { title: 'Bảo mật', desc: 'Quản lý cài đặt bảo mật OpenClaw', toolPermissions: 'Quyền công cụ', savePermissions: 'Lưu quyền', permSaved: 'Quyền đã lưu', loadFailed: 'Tải cài đặt thất bại' },
|
||||
es: { title: 'Seguridad', desc: 'Gestionar configuración de seguridad de OpenClaw', toolPermissions: 'Permisos de herramientas', savePermissions: 'Guardar permisos', permSaved: 'Permisos guardados', loadFailed: 'Error al cargar configuración' },
|
||||
pt: { title: 'Segurança', desc: 'Gerenciar configurações de segurança do OpenClaw', toolPermissions: 'Permissões de ferramentas', savePermissions: 'Salvar permissões', permSaved: 'Permissões salvas', loadFailed: 'Falha ao carregar configurações' },
|
||||
ru: { title: 'Безопасность', desc: 'Управление настройками безопасности OpenClaw', toolPermissions: 'Права инструментов', savePermissions: 'Сохранить права', permSaved: 'Права сохранены', loadFailed: 'Ошибка загрузки настроек' },
|
||||
fr: { title: 'Sécurité', desc: 'Gérer les paramètres de sécurité OpenClaw', toolPermissions: 'Permissions des outils', savePermissions: 'Enregistrer les permissions', permSaved: 'Permissions enregistrées', loadFailed: 'Échec du chargement de la configuration' },
|
||||
de: { title: 'Sicherheit', desc: 'OpenClaw-Sicherheitseinstellungen verwalten', toolPermissions: 'Werkzeug-Berechtigungen', savePermissions: 'Berechtigungen speichern', permSaved: 'Berechtigungen gespeichert', loadFailed: 'Einstellungen laden fehlgeschlagen' },
|
||||
}
|
||||
|
||||
// ── memory ──
|
||||
const memory = {
|
||||
vi: { title: 'Bộ nhớ', desc: 'Quản lý tệp bộ nhớ Agent', noFiles: 'Không có tệp', view: 'Xem', download: 'Tải xuống', delete: 'Xóa', upload: 'Tải lên', uploading: 'Đang tải...', uploaded: 'Đã tải lên', uploadFailed: 'Tải lên thất bại', deleted: 'Đã xóa', deleteFailed: 'Xóa thất bại', loadFailed: 'Tải thất bại', selectAgent: 'Chọn Agent', searchPlaceholder: 'Tìm kiếm...' },
|
||||
es: { title: 'Memoria', desc: 'Gestionar archivos de memoria del Agent', noFiles: 'Sin archivos', view: 'Ver', download: 'Descargar', delete: 'Eliminar', upload: 'Subir', uploading: 'Subiendo...', uploaded: 'Subido', uploadFailed: 'Error al subir', deleted: 'Eliminado', deleteFailed: 'Error al eliminar', loadFailed: 'Error al cargar', selectAgent: 'Seleccionar Agent', searchPlaceholder: 'Buscar...' },
|
||||
pt: { title: 'Memória', desc: 'Gerenciar arquivos de memória do Agent', noFiles: 'Sem arquivos', view: 'Ver', download: 'Baixar', delete: 'Excluir', upload: 'Enviar', uploading: 'Enviando...', uploaded: 'Enviado', uploadFailed: 'Falha ao enviar', deleted: 'Excluído', deleteFailed: 'Falha ao excluir', loadFailed: 'Falha ao carregar', selectAgent: 'Selecionar Agent', searchPlaceholder: 'Pesquisar...' },
|
||||
ru: { title: 'Память', desc: 'Управление файлами памяти агента', noFiles: 'Нет файлов', view: 'Просмотр', download: 'Скачать', delete: 'Удалить', upload: 'Загрузить', uploading: 'Загрузка...', uploaded: 'Загружено', uploadFailed: 'Ошибка загрузки', deleted: 'Удалено', deleteFailed: 'Ошибка удаления', loadFailed: 'Ошибка загрузки', selectAgent: 'Выбрать агента', searchPlaceholder: 'Поиск...' },
|
||||
fr: { title: 'Mémoire', desc: "Gérer les fichiers mémoire de l'Agent", noFiles: 'Aucun fichier', view: 'Voir', download: 'Télécharger', delete: 'Supprimer', upload: 'Téléverser', uploading: 'Téléversement...', uploaded: 'Téléversé', uploadFailed: 'Échec du téléversement', deleted: 'Supprimé', deleteFailed: 'Échec de la suppression', loadFailed: 'Échec du chargement', selectAgent: 'Sélectionner Agent', searchPlaceholder: 'Rechercher...' },
|
||||
de: { title: 'Speicher', desc: 'Agent-Speicherdateien verwalten', noFiles: 'Keine Dateien', view: 'Ansehen', download: 'Herunterladen', delete: 'Löschen', upload: 'Hochladen', uploading: 'Wird hochgeladen...', uploaded: 'Hochgeladen', uploadFailed: 'Hochladen fehlgeschlagen', deleted: 'Gelöscht', deleteFailed: 'Löschen fehlgeschlagen', loadFailed: 'Laden fehlgeschlagen', selectAgent: 'Agent auswählen', searchPlaceholder: 'Suchen...' },
|
||||
}
|
||||
|
||||
// ── usage ──
|
||||
const usage = {
|
||||
vi: { title: 'Sử dụng', desc: 'Xem thống kê sử dụng mô hình và token', totalTokens: 'Tổng token', totalRequests: 'Tổng yêu cầu', totalCost: 'Tổng chi phí', today: 'Hôm nay', week: 'Tuần này', month: 'Tháng này', all: 'Tất cả', noData: 'Không có dữ liệu', model: 'Mô hình', tokens: 'Token', loadFailed: 'Tải thất bại', chart: 'Biểu đồ', table: 'Bảng' },
|
||||
es: { title: 'Uso', desc: 'Ver estadísticas de uso de modelos y tokens', totalTokens: 'Tokens totales', totalRequests: 'Solicitudes totales', totalCost: 'Costo total', today: 'Hoy', week: 'Esta semana', month: 'Este mes', all: 'Todo', noData: 'Sin datos', model: 'Modelo', tokens: 'Tokens', loadFailed: 'Error al cargar', chart: 'Gráfico', table: 'Tabla' },
|
||||
pt: { title: 'Uso', desc: 'Ver estatísticas de uso de modelos e tokens', totalTokens: 'Total de tokens', totalRequests: 'Total de solicitações', totalCost: 'Custo total', today: 'Hoje', week: 'Esta semana', month: 'Este mês', all: 'Todos', noData: 'Sem dados', model: 'Modelo', tokens: 'Tokens', loadFailed: 'Falha ao carregar', chart: 'Gráfico', table: 'Tabela' },
|
||||
ru: { title: 'Использование', desc: 'Статистика использования моделей и токенов', totalTokens: 'Всего токенов', totalRequests: 'Всего запросов', totalCost: 'Общая стоимость', today: 'Сегодня', week: 'Эта неделя', month: 'Этот месяц', all: 'Все', noData: 'Нет данных', model: 'Модель', tokens: 'Токены', loadFailed: 'Ошибка загрузки', chart: 'График', table: 'Таблица' },
|
||||
fr: { title: 'Utilisation', desc: "Voir les statistiques d'utilisation des modèles et tokens", totalTokens: 'Tokens totaux', totalRequests: 'Requêtes totales', totalCost: 'Coût total', today: "Aujourd'hui", week: 'Cette semaine', month: 'Ce mois', all: 'Tout', noData: 'Aucune donnée', model: 'Modèle', tokens: 'Tokens', loadFailed: 'Échec du chargement', chart: 'Graphique', table: 'Tableau' },
|
||||
de: { title: 'Nutzung', desc: 'Modell- und Token-Nutzungsstatistiken anzeigen', totalTokens: 'Gesamte Tokens', totalRequests: 'Gesamte Anfragen', totalCost: 'Gesamtkosten', today: 'Heute', week: 'Diese Woche', month: 'Dieser Monat', all: 'Alle', noData: 'Keine Daten', model: 'Modell', tokens: 'Tokens', loadFailed: 'Laden fehlgeschlagen', chart: 'Diagramm', table: 'Tabelle' },
|
||||
}
|
||||
|
||||
// ── cron ──
|
||||
const cron = {
|
||||
vi: { title: 'Tác vụ định kỳ', desc: 'Quản lý tác vụ định kỳ OpenClaw', addTask: '+ Thêm tác vụ', noTasks: 'Không có tác vụ', taskName: 'Tên tác vụ', schedule: 'Lịch trình', status: 'Trạng thái', active: 'Hoạt động', inactive: 'Không hoạt động', edit: 'Sửa', delete: 'Xóa', enable: 'Bật', disable: 'Tắt', runNow: 'Chạy ngay', created: 'Tác vụ đã tạo', deleted: 'Tác vụ đã xóa', loadFailed: 'Tải thất bại' },
|
||||
es: { title: 'Tareas programadas', desc: 'Gestionar tareas programadas de OpenClaw', addTask: '+ Agregar tarea', noTasks: 'Sin tareas', taskName: 'Nombre de tarea', schedule: 'Programación', status: 'Estado', active: 'Activa', inactive: 'Inactiva', edit: 'Editar', delete: 'Eliminar', enable: 'Habilitar', disable: 'Deshabilitar', runNow: 'Ejecutar ahora', created: 'Tarea creada', deleted: 'Tarea eliminada', loadFailed: 'Error al cargar' },
|
||||
pt: { title: 'Tarefas agendadas', desc: 'Gerenciar tarefas agendadas do OpenClaw', addTask: '+ Adicionar tarefa', noTasks: 'Sem tarefas', taskName: 'Nome da tarefa', schedule: 'Agendamento', status: 'Status', active: 'Ativa', inactive: 'Inativa', edit: 'Editar', delete: 'Excluir', enable: 'Ativar', disable: 'Desativar', runNow: 'Executar agora', created: 'Tarefa criada', deleted: 'Tarefa excluída', loadFailed: 'Falha ao carregar' },
|
||||
ru: { title: 'Планировщик', desc: 'Управление периодическими задачами OpenClaw', addTask: '+ Добавить задачу', noTasks: 'Нет задач', taskName: 'Имя задачи', schedule: 'Расписание', status: 'Статус', active: 'Активна', inactive: 'Неактивна', edit: 'Редактировать', delete: 'Удалить', enable: 'Включить', disable: 'Отключить', runNow: 'Запустить сейчас', created: 'Задача создана', deleted: 'Задача удалена', loadFailed: 'Ошибка загрузки' },
|
||||
fr: { title: 'Tâches planifiées', desc: 'Gérer les tâches planifiées OpenClaw', addTask: '+ Ajouter une tâche', noTasks: 'Aucune tâche', taskName: 'Nom de la tâche', schedule: 'Planification', status: 'Statut', active: 'Active', inactive: 'Inactive', edit: 'Modifier', delete: 'Supprimer', enable: 'Activer', disable: 'Désactiver', runNow: 'Exécuter maintenant', created: 'Tâche créée', deleted: 'Tâche supprimée', loadFailed: 'Échec du chargement' },
|
||||
de: { title: 'Geplante Aufgaben', desc: 'OpenClaw-Aufgaben verwalten', addTask: '+ Aufgabe hinzufügen', noTasks: 'Keine Aufgaben', taskName: 'Aufgabenname', schedule: 'Zeitplan', status: 'Status', active: 'Aktiv', inactive: 'Inaktiv', edit: 'Bearbeiten', delete: 'Löschen', enable: 'Aktivieren', disable: 'Deaktivieren', runNow: 'Jetzt ausführen', created: 'Aufgabe erstellt', deleted: 'Aufgabe gelöscht', loadFailed: 'Laden fehlgeschlagen' },
|
||||
}
|
||||
|
||||
// ── skills ──
|
||||
const skills = {
|
||||
vi: { title: 'Skills', desc: 'Quản lý và cài đặt OpenClaw Skills', installed: 'Đã cài', available: 'Có sẵn', noSkills: 'Không có Skills', install: 'Cài đặt', uninstall: 'Gỡ cài đặt', update: 'Cập nhật', search: 'Tìm kiếm Skills...', installing: 'Đang cài...', installSuccess: 'Đã cài đặt', installFailed: 'Cài đặt thất bại', loadFailed: 'Tải thất bại', noResults: 'Không có kết quả', refreshList: 'Làm mới danh sách', checkUpdates: 'Kiểm tra cập nhật', noUpdates: 'Đã cập nhật' },
|
||||
es: { title: 'Skills', desc: 'Gestionar e instalar OpenClaw Skills', installed: 'Instalados', available: 'Disponibles', noSkills: 'Sin Skills', install: 'Instalar', uninstall: 'Desinstalar', update: 'Actualizar', search: 'Buscar Skills...', installing: 'Instalando...', installSuccess: 'Instalado', installFailed: 'Error al instalar', loadFailed: 'Error al cargar', noResults: 'Sin resultados', refreshList: 'Actualizar lista', checkUpdates: 'Buscar actualizaciones', noUpdates: 'Todo actualizado' },
|
||||
pt: { title: 'Skills', desc: 'Gerenciar e instalar OpenClaw Skills', installed: 'Instalados', available: 'Disponíveis', noSkills: 'Sem Skills', install: 'Instalar', uninstall: 'Desinstalar', update: 'Atualizar', search: 'Pesquisar Skills...', installing: 'Instalando...', installSuccess: 'Instalado', installFailed: 'Falha ao instalar', loadFailed: 'Falha ao carregar', noResults: 'Sem resultados', refreshList: 'Atualizar lista', checkUpdates: 'Verificar atualizações', noUpdates: 'Tudo atualizado' },
|
||||
ru: { title: 'Skills', desc: 'Управление и установка навыков OpenClaw', installed: 'Установленные', available: 'Доступные', noSkills: 'Нет навыков', install: 'Установить', uninstall: 'Удалить', update: 'Обновить', search: 'Поиск Skills...', installing: 'Установка...', installSuccess: 'Установлено', installFailed: 'Ошибка установки', loadFailed: 'Ошибка загрузки', noResults: 'Ничего не найдено', refreshList: 'Обновить список', checkUpdates: 'Проверить обновления', noUpdates: 'Всё обновлено' },
|
||||
fr: { title: 'Skills', desc: 'Gérer et installer les Skills OpenClaw', installed: 'Installés', available: 'Disponibles', noSkills: 'Aucun Skill', install: 'Installer', uninstall: 'Désinstaller', update: 'Mettre à jour', search: 'Rechercher Skills...', installing: 'Installation...', installSuccess: 'Installé', installFailed: "Échec de l'installation", loadFailed: 'Échec du chargement', noResults: 'Aucun résultat', refreshList: 'Actualiser la liste', checkUpdates: 'Vérifier les mises à jour', noUpdates: 'Tout est à jour' },
|
||||
de: { title: 'Skills', desc: 'OpenClaw Skills verwalten und installieren', installed: 'Installiert', available: 'Verfügbar', noSkills: 'Keine Skills', install: 'Installieren', uninstall: 'Deinstallieren', update: 'Aktualisieren', search: 'Skills suchen...', installing: 'Wird installiert...', installSuccess: 'Installiert', installFailed: 'Installation fehlgeschlagen', loadFailed: 'Laden fehlgeschlagen', noResults: 'Keine Ergebnisse', refreshList: 'Liste aktualisieren', checkUpdates: 'Nach Updates suchen', noUpdates: 'Alles aktuell' },
|
||||
}
|
||||
|
||||
// ── ext ──
|
||||
const ext = {
|
||||
vi: { title: 'Công cụ mở rộng', desc: 'Quản lý cftunnel và ClawApp', cftunnelTitle: 'cftunnel', clawappTitle: 'ClawApp', installBtn: 'Cài đặt nhanh', status: 'Trạng thái', running: 'Đang chạy', stopped: 'Đã dừng', version: 'Phiên bản', startTunnel: 'Bắt đầu tunnel', stopTunnel: 'Dừng tunnel', start: 'Khởi động', stop: 'Dừng', installing: 'Đang cài đặt...', installDone: 'Cài đặt hoàn tất', installFailed: 'Cài đặt thất bại' },
|
||||
es: { title: 'Herramientas de extensión', desc: 'Gestionar cftunnel y ClawApp', cftunnelTitle: 'cftunnel', clawappTitle: 'ClawApp', installBtn: 'Instalación rápida', status: 'Estado', running: 'Ejecutando', stopped: 'Detenido', version: 'Versión', startTunnel: 'Iniciar túnel', stopTunnel: 'Detener túnel', start: 'Iniciar', stop: 'Detener', installing: 'Instalando...', installDone: 'Instalación completada', installFailed: 'Instalación fallida' },
|
||||
pt: { title: 'Ferramentas de extensão', desc: 'Gerenciar cftunnel e ClawApp', cftunnelTitle: 'cftunnel', clawappTitle: 'ClawApp', installBtn: 'Instalação rápida', status: 'Status', running: 'Em execução', stopped: 'Parado', version: 'Versão', startTunnel: 'Iniciar túnel', stopTunnel: 'Parar túnel', start: 'Iniciar', stop: 'Parar', installing: 'Instalando...', installDone: 'Instalação concluída', installFailed: 'Instalação falhou' },
|
||||
ru: { title: 'Расширения', desc: 'Управление cftunnel и ClawApp', cftunnelTitle: 'cftunnel', clawappTitle: 'ClawApp', installBtn: 'Быстрая установка', status: 'Статус', running: 'Работает', stopped: 'Остановлен', version: 'Версия', startTunnel: 'Запустить туннель', stopTunnel: 'Остановить туннель', start: 'Запустить', stop: 'Остановить', installing: 'Установка...', installDone: 'Установка завершена', installFailed: 'Ошибка установки' },
|
||||
fr: { title: 'Outils additionnels', desc: 'Gérer cftunnel et ClawApp', cftunnelTitle: 'cftunnel', clawappTitle: 'ClawApp', installBtn: 'Installation rapide', status: 'Statut', running: 'En cours', stopped: 'Arrêté', version: 'Version', startTunnel: 'Démarrer le tunnel', stopTunnel: 'Arrêter le tunnel', start: 'Démarrer', stop: 'Arrêter', installing: 'Installation...', installDone: 'Installation terminée', installFailed: "Échec de l'installation" },
|
||||
de: { title: 'Erweiterungstools', desc: 'cftunnel und ClawApp verwalten', cftunnelTitle: 'cftunnel', clawappTitle: 'ClawApp', installBtn: 'Schnellinstallation', status: 'Status', running: 'Läuft', stopped: 'Gestoppt', version: 'Version', startTunnel: 'Tunnel starten', stopTunnel: 'Tunnel stoppen', start: 'Starten', stop: 'Stoppen', installing: 'Wird installiert...', installDone: 'Installation abgeschlossen', installFailed: 'Installation fehlgeschlagen' },
|
||||
}
|
||||
|
||||
// Write medium modules
|
||||
for (const mod of [
|
||||
['dashboard', dashboard], ['services', services], ['settings', settings],
|
||||
['agents', agents], ['gateway', gateway], ['models', models],
|
||||
['security', security], ['memory', memory], ['usage', usage],
|
||||
['cron', cron], ['skills', skills], ['ext', ext],
|
||||
]) {
|
||||
for (const lang of LANGS) {
|
||||
if (mod[1][lang]) w(lang, mod[0], mod[1][lang])
|
||||
}
|
||||
}
|
||||
|
||||
console.log('✓ Medium modules: dashboard, services, settings, agents, gateway, models, security, memory, usage, cron, skills, ext (6 langs)')
|
||||
|
||||
// ── communication ──
|
||||
const communication = {
|
||||
vi: { title: 'Truyền thông & Tự động hóa', desc: 'Cấu hình kênh thông báo và quy tắc tự động', notifyTitle: 'Kênh thông báo', automationTitle: 'Quy tắc tự động', addChannel: '+ Thêm kênh', addRule: '+ Thêm quy tắc', noChannels: 'Không có kênh', noRules: 'Không có quy tắc', channelName: 'Tên kênh', enabled: 'Đã bật', disabled: 'Đã tắt', test: 'Gửi thử', testing: 'Đang thử...', testSuccess: 'Gửi thử thành công', testFailed: 'Gửi thử thất bại', save: 'Lưu', saved: 'Đã lưu', saveFailed: 'Lưu thất bại', delete: 'Xóa', deleted: 'Đã xóa', deleteFailed: 'Xóa thất bại', loadFailed: 'Tải thất bại', trigger: 'Kích hoạt', action: 'Hành động', selectAgent: 'Chọn Agent', approve: 'Phê duyệt' },
|
||||
es: { title: 'Comunicación y Automatización', desc: 'Configurar canales de notificación y reglas de automatización', notifyTitle: 'Canales de notificación', automationTitle: 'Reglas de automatización', addChannel: '+ Agregar canal', addRule: '+ Agregar regla', noChannels: 'Sin canales', noRules: 'Sin reglas', channelName: 'Nombre del canal', enabled: 'Habilitado', disabled: 'Deshabilitado', test: 'Enviar prueba', testing: 'Probando...', testSuccess: 'Prueba exitosa', testFailed: 'Prueba fallida', save: 'Guardar', saved: 'Guardado', saveFailed: 'Error al guardar', delete: 'Eliminar', deleted: 'Eliminado', deleteFailed: 'Error al eliminar', loadFailed: 'Error al cargar', trigger: 'Activador', action: 'Acción', selectAgent: 'Seleccionar Agent', approve: 'Aprobar' },
|
||||
pt: { title: 'Comunicação e Automação', desc: 'Configurar canais de notificação e regras de automação', notifyTitle: 'Canais de notificação', automationTitle: 'Regras de automação', addChannel: '+ Adicionar canal', addRule: '+ Adicionar regra', noChannels: 'Sem canais', noRules: 'Sem regras', channelName: 'Nome do canal', enabled: 'Ativado', disabled: 'Desativado', test: 'Enviar teste', testing: 'Testando...', testSuccess: 'Teste bem-sucedido', testFailed: 'Teste falhou', save: 'Salvar', saved: 'Salvo', saveFailed: 'Falha ao salvar', delete: 'Excluir', deleted: 'Excluído', deleteFailed: 'Falha ao excluir', loadFailed: 'Falha ao carregar', trigger: 'Gatilho', action: 'Ação', selectAgent: 'Selecionar Agent', approve: 'Aprovar' },
|
||||
ru: { title: 'Коммуникации и автоматизация', desc: 'Настройка каналов уведомлений и правил автоматизации', notifyTitle: 'Каналы уведомлений', automationTitle: 'Правила автоматизации', addChannel: '+ Добавить канал', addRule: '+ Добавить правило', noChannels: 'Нет каналов', noRules: 'Нет правил', channelName: 'Имя канала', enabled: 'Включено', disabled: 'Отключено', test: 'Тестовая отправка', testing: 'Тестирование...', testSuccess: 'Тест успешен', testFailed: 'Тест не удался', save: 'Сохранить', saved: 'Сохранено', saveFailed: 'Ошибка сохранения', delete: 'Удалить', deleted: 'Удалено', deleteFailed: 'Ошибка удаления', loadFailed: 'Ошибка загрузки', trigger: 'Триггер', action: 'Действие', selectAgent: 'Выбрать агента', approve: 'Одобрить' },
|
||||
fr: { title: 'Communication et Automatisation', desc: 'Configurer les canaux de notification et les règles d\'automatisation', notifyTitle: 'Canaux de notification', automationTitle: 'Règles d\'automatisation', addChannel: '+ Ajouter un canal', addRule: '+ Ajouter une règle', noChannels: 'Aucun canal', noRules: 'Aucune règle', channelName: 'Nom du canal', enabled: 'Activé', disabled: 'Désactivé', test: 'Envoyer un test', testing: 'Test en cours...', testSuccess: 'Test réussi', testFailed: 'Test échoué', save: 'Enregistrer', saved: 'Enregistré', saveFailed: 'Échec de la sauvegarde', delete: 'Supprimer', deleted: 'Supprimé', deleteFailed: 'Échec de la suppression', loadFailed: 'Échec du chargement', trigger: 'Déclencheur', action: 'Action', selectAgent: 'Sélectionner Agent', approve: 'Approuver' },
|
||||
de: { title: 'Kommunikation & Automatisierung', desc: 'Benachrichtigungskanäle und Automatisierungsregeln konfigurieren', notifyTitle: 'Benachrichtigungskanäle', automationTitle: 'Automatisierungsregeln', addChannel: '+ Kanal hinzufügen', addRule: '+ Regel hinzufügen', noChannels: 'Keine Kanäle', noRules: 'Keine Regeln', channelName: 'Kanalname', enabled: 'Aktiviert', disabled: 'Deaktiviert', test: 'Test senden', testing: 'Wird getestet...', testSuccess: 'Test erfolgreich', testFailed: 'Test fehlgeschlagen', save: 'Speichern', saved: 'Gespeichert', saveFailed: 'Speichern fehlgeschlagen', delete: 'Löschen', deleted: 'Gelöscht', deleteFailed: 'Löschen fehlgeschlagen', loadFailed: 'Laden fehlgeschlagen', trigger: 'Auslöser', action: 'Aktion', selectAgent: 'Agent auswählen', approve: 'Genehmigen' },
|
||||
}
|
||||
|
||||
// ── channels (core keys) ──
|
||||
const channels = {
|
||||
vi: { title: 'Kênh', desc: 'Quản lý kênh tin nhắn và kết nối nền tảng', addChannel: '+ Thêm kênh', noChannels: 'Không có kênh', channelName: 'Tên kênh', platform: 'Nền tảng', status: 'Trạng thái', connected: 'Đã kết nối', disconnected: 'Chưa kết nối', edit: 'Sửa', delete: 'Xóa', save: 'Lưu', saved: 'Đã lưu', saveFailed: 'Lưu thất bại', deleted: 'Đã xóa', loadFailed: 'Tải thất bại', testConnection: 'Kiểm tra kết nối', testing: 'Đang kiểm tra...', testSuccess: 'Kết nối thành công', testFailed: 'Kết nối thất bại', bindAgent: 'Liên kết Agent', selectAgent: 'Chọn Agent', pairingTitle: 'Ghép nối', approve: 'Phê duyệt', configTitle: 'Cấu hình kênh', restartRequired: 'Cần khởi động lại Gateway', installPlugin: 'Cài đặt plugin', installing: 'Đang cài đặt...', installSuccess: 'Cài đặt thành công', installFailed: 'Cài đặt thất bại' },
|
||||
es: { title: 'Canales', desc: 'Gestionar canales de mensajería y conexiones de plataforma', addChannel: '+ Agregar canal', noChannels: 'Sin canales', channelName: 'Nombre del canal', platform: 'Plataforma', status: 'Estado', connected: 'Conectado', disconnected: 'Desconectado', edit: 'Editar', delete: 'Eliminar', save: 'Guardar', saved: 'Guardado', saveFailed: 'Error al guardar', deleted: 'Eliminado', loadFailed: 'Error al cargar', testConnection: 'Probar conexión', testing: 'Probando...', testSuccess: 'Conexión exitosa', testFailed: 'Conexión fallida', bindAgent: 'Vincular Agent', selectAgent: 'Seleccionar Agent', pairingTitle: 'Emparejamiento', approve: 'Aprobar', configTitle: 'Configuración del canal', restartRequired: 'Se requiere reiniciar Gateway', installPlugin: 'Instalar plugin', installing: 'Instalando...', installSuccess: 'Instalado', installFailed: 'Instalación fallida' },
|
||||
pt: { title: 'Canais', desc: 'Gerenciar canais de mensagens e conexões de plataforma', addChannel: '+ Adicionar canal', noChannels: 'Sem canais', channelName: 'Nome do canal', platform: 'Plataforma', status: 'Status', connected: 'Conectado', disconnected: 'Desconectado', edit: 'Editar', delete: 'Excluir', save: 'Salvar', saved: 'Salvo', saveFailed: 'Falha ao salvar', deleted: 'Excluído', loadFailed: 'Falha ao carregar', testConnection: 'Testar conexão', testing: 'Testando...', testSuccess: 'Conexão bem-sucedida', testFailed: 'Conexão falhou', bindAgent: 'Vincular Agent', selectAgent: 'Selecionar Agent', pairingTitle: 'Pareamento', approve: 'Aprovar', configTitle: 'Configuração do canal', restartRequired: 'É necessário reiniciar o Gateway', installPlugin: 'Instalar plugin', installing: 'Instalando...', installSuccess: 'Instalado', installFailed: 'Instalação falhou' },
|
||||
ru: { title: 'Каналы', desc: 'Управление каналами сообщений и подключение платформ', addChannel: '+ Добавить канал', noChannels: 'Нет каналов', channelName: 'Имя канала', platform: 'Платформа', status: 'Статус', connected: 'Подключён', disconnected: 'Отключён', edit: 'Редактировать', delete: 'Удалить', save: 'Сохранить', saved: 'Сохранено', saveFailed: 'Ошибка сохранения', deleted: 'Удалено', loadFailed: 'Ошибка загрузки', testConnection: 'Проверить подключение', testing: 'Проверка...', testSuccess: 'Подключение успешно', testFailed: 'Ошибка подключения', bindAgent: 'Привязать агента', selectAgent: 'Выбрать агента', pairingTitle: 'Сопряжение', approve: 'Одобрить', configTitle: 'Настройка канала', restartRequired: 'Требуется перезапуск Gateway', installPlugin: 'Установить плагин', installing: 'Установка...', installSuccess: 'Установлено', installFailed: 'Ошибка установки' },
|
||||
fr: { title: 'Canaux', desc: 'Gérer les canaux de messagerie et les connexions de plateforme', addChannel: '+ Ajouter un canal', noChannels: 'Aucun canal', channelName: 'Nom du canal', platform: 'Plateforme', status: 'Statut', connected: 'Connecté', disconnected: 'Déconnecté', edit: 'Modifier', delete: 'Supprimer', save: 'Enregistrer', saved: 'Enregistré', saveFailed: 'Échec de la sauvegarde', deleted: 'Supprimé', loadFailed: 'Échec du chargement', testConnection: 'Tester la connexion', testing: 'Test en cours...', testSuccess: 'Connexion réussie', testFailed: 'Connexion échouée', bindAgent: 'Lier un Agent', selectAgent: 'Sélectionner Agent', pairingTitle: 'Appairage', approve: 'Approuver', configTitle: 'Configuration du canal', restartRequired: 'Redémarrage de Gateway requis', installPlugin: 'Installer le plugin', installing: 'Installation...', installSuccess: 'Installé', installFailed: "Échec de l'installation" },
|
||||
de: { title: 'Kanäle', desc: 'Nachrichtenkanäle und Plattformverbindungen verwalten', addChannel: '+ Kanal hinzufügen', noChannels: 'Keine Kanäle', channelName: 'Kanalname', platform: 'Plattform', status: 'Status', connected: 'Verbunden', disconnected: 'Getrennt', edit: 'Bearbeiten', delete: 'Löschen', save: 'Speichern', saved: 'Gespeichert', saveFailed: 'Speichern fehlgeschlagen', deleted: 'Gelöscht', loadFailed: 'Laden fehlgeschlagen', testConnection: 'Verbindung testen', testing: 'Wird getestet...', testSuccess: 'Verbindung erfolgreich', testFailed: 'Verbindung fehlgeschlagen', bindAgent: 'Agent verknüpfen', selectAgent: 'Agent auswählen', pairingTitle: 'Kopplung', approve: 'Genehmigen', configTitle: 'Kanalkonfiguration', restartRequired: 'Gateway-Neustart erforderlich', installPlugin: 'Plugin installieren', installing: 'Wird installiert...', installSuccess: 'Installiert', installFailed: 'Installation fehlgeschlagen' },
|
||||
}
|
||||
|
||||
// ── chat (core keys) ──
|
||||
const chat = {
|
||||
vi: { title: 'Trò chuyện trực tiếp', desc: 'Trò chuyện với Agent theo thời gian thực', selectAgent: 'Chọn Agent', connecting: 'Đang kết nối...', connected: 'Đã kết nối', disconnected: 'Đã ngắt kết nối', send: 'Gửi', inputPlaceholder: 'Nhập tin nhắn...', noMessages: 'Không có tin nhắn', clearChat: 'Xóa lịch sử', newSession: 'Phiên mới', noSessions: 'Không có phiên', copyMessage: 'Sao chép', thinking: 'Đang suy nghĩ...', generating: 'Đang tạo...', stop: 'Dừng', regenerate: 'Tạo lại', modelSelect: 'Chọn mô hình', gatewayNotRunning: 'Gateway chưa chạy', startGateway: 'Khởi động Gateway' },
|
||||
es: { title: 'Chat en vivo', desc: 'Chatear con el Agent en tiempo real', selectAgent: 'Seleccionar Agent', connecting: 'Conectando...', connected: 'Conectado', disconnected: 'Desconectado', send: 'Enviar', inputPlaceholder: 'Escribe un mensaje...', noMessages: 'Sin mensajes', clearChat: 'Limpiar historial', newSession: 'Nueva sesión', noSessions: 'Sin sesiones', copyMessage: 'Copiar', thinking: 'Pensando...', generating: 'Generando...', stop: 'Detener', regenerate: 'Regenerar', modelSelect: 'Seleccionar modelo', gatewayNotRunning: 'Gateway no está ejecutando', startGateway: 'Iniciar Gateway' },
|
||||
pt: { title: 'Chat ao vivo', desc: 'Conversar com o Agent em tempo real', selectAgent: 'Selecionar Agent', connecting: 'Conectando...', connected: 'Conectado', disconnected: 'Desconectado', send: 'Enviar', inputPlaceholder: 'Digite uma mensagem...', noMessages: 'Sem mensagens', clearChat: 'Limpar histórico', newSession: 'Nova sessão', noSessions: 'Sem sessões', copyMessage: 'Copiar', thinking: 'Pensando...', generating: 'Gerando...', stop: 'Parar', regenerate: 'Regenerar', modelSelect: 'Selecionar modelo', gatewayNotRunning: 'Gateway não está em execução', startGateway: 'Iniciar Gateway' },
|
||||
ru: { title: 'Живой чат', desc: 'Общение с агентом в реальном времени', selectAgent: 'Выбрать агента', connecting: 'Подключение...', connected: 'Подключено', disconnected: 'Отключено', send: 'Отправить', inputPlaceholder: 'Введите сообщение...', noMessages: 'Нет сообщений', clearChat: 'Очистить историю', newSession: 'Новая сессия', noSessions: 'Нет сессий', copyMessage: 'Копировать', thinking: 'Думает...', generating: 'Генерация...', stop: 'Остановить', regenerate: 'Перегенерировать', modelSelect: 'Выбрать модель', gatewayNotRunning: 'Gateway не запущен', startGateway: 'Запустить Gateway' },
|
||||
fr: { title: 'Chat en direct', desc: "Discuter avec l'Agent en temps réel", selectAgent: 'Sélectionner Agent', connecting: 'Connexion...', connected: 'Connecté', disconnected: 'Déconnecté', send: 'Envoyer', inputPlaceholder: 'Tapez un message...', noMessages: 'Aucun message', clearChat: "Effacer l'historique", newSession: 'Nouvelle session', noSessions: 'Aucune session', copyMessage: 'Copier', thinking: 'Réflexion...', generating: 'Génération...', stop: 'Arrêter', regenerate: 'Régénérer', modelSelect: 'Sélectionner un modèle', gatewayNotRunning: "Gateway n'est pas en cours d'exécution", startGateway: 'Démarrer Gateway' },
|
||||
de: { title: 'Live-Chat', desc: 'Mit dem Agenten in Echtzeit chatten', selectAgent: 'Agent auswählen', connecting: 'Verbindung wird hergestellt...', connected: 'Verbunden', disconnected: 'Getrennt', send: 'Senden', inputPlaceholder: 'Nachricht eingeben...', noMessages: 'Keine Nachrichten', clearChat: 'Verlauf löschen', newSession: 'Neue Sitzung', noSessions: 'Keine Sitzungen', copyMessage: 'Kopieren', thinking: 'Denkt nach...', generating: 'Wird generiert...', stop: 'Stoppen', regenerate: 'Neu generieren', modelSelect: 'Modell auswählen', gatewayNotRunning: 'Gateway läuft nicht', startGateway: 'Gateway starten' },
|
||||
}
|
||||
|
||||
// ── chatDebug (core keys) ──
|
||||
const chatDebug = {
|
||||
vi: { title: 'Chẩn đoán hệ thống', desc: 'Chẩn đoán kết nối WebSocket và gỡ lỗi mạng', wsStatus: 'Trạng thái WebSocket', wsConnect: 'Kết nối', wsDisconnect: 'Ngắt kết nối', wsConnected: 'Đã kết nối', wsDisconnected: 'Chưa kết nối', wsConnecting: 'Đang kết nối...', wsError: 'Lỗi WebSocket', networkLogTitle: 'Nhật ký yêu cầu mạng', noRequests: 'Không có yêu cầu', totalRequests: 'Tổng yêu cầu', fixStarting: 'Bắt đầu sửa chữa...', fixFailed: 'Sửa chữa thất bại' },
|
||||
es: { title: 'Diagnóstico del sistema', desc: 'Diagnóstico de conexión WebSocket y depuración de red', wsStatus: 'Estado WebSocket', wsConnect: 'Conectar', wsDisconnect: 'Desconectar', wsConnected: 'Conectado', wsDisconnected: 'No conectado', wsConnecting: 'Conectando...', wsError: 'Error WebSocket', networkLogTitle: 'Registro de solicitudes de red', noRequests: 'Sin solicitudes', totalRequests: 'Total de solicitudes', fixStarting: 'Iniciando reparación...', fixFailed: 'Reparación fallida' },
|
||||
pt: { title: 'Diagnóstico do sistema', desc: 'Diagnóstico de conexão WebSocket e depuração de rede', wsStatus: 'Status WebSocket', wsConnect: 'Conectar', wsDisconnect: 'Desconectar', wsConnected: 'Conectado', wsDisconnected: 'Não conectado', wsConnecting: 'Conectando...', wsError: 'Erro WebSocket', networkLogTitle: 'Log de solicitações de rede', noRequests: 'Sem solicitações', totalRequests: 'Total de solicitações', fixStarting: 'Iniciando reparo...', fixFailed: 'Reparo falhou' },
|
||||
ru: { title: 'Диагностика системы', desc: 'Диагностика WebSocket и отладка сети', wsStatus: 'Статус WebSocket', wsConnect: 'Подключить', wsDisconnect: 'Отключить', wsConnected: 'Подключено', wsDisconnected: 'Не подключено', wsConnecting: 'Подключение...', wsError: 'Ошибка WebSocket', networkLogTitle: 'Журнал сетевых запросов', noRequests: 'Нет запросов', totalRequests: 'Всего запросов', fixStarting: 'Начинаем исправление...', fixFailed: 'Исправление не удалось' },
|
||||
fr: { title: 'Diagnostic système', desc: 'Diagnostic de connexion WebSocket et débogage réseau', wsStatus: 'Statut WebSocket', wsConnect: 'Connecter', wsDisconnect: 'Déconnecter', wsConnected: 'Connecté', wsDisconnected: 'Non connecté', wsConnecting: 'Connexion...', wsError: 'Erreur WebSocket', networkLogTitle: 'Journal des requêtes réseau', noRequests: 'Aucune requête', totalRequests: 'Total des requêtes', fixStarting: 'Début de la réparation...', fixFailed: 'Réparation échouée' },
|
||||
de: { title: 'Systemdiagnose', desc: 'WebSocket-Verbindungsdiagnose und Netzwerk-Debugging', wsStatus: 'WebSocket-Status', wsConnect: 'Verbinden', wsDisconnect: 'Trennen', wsConnected: 'Verbunden', wsDisconnected: 'Nicht verbunden', wsConnecting: 'Verbindung wird hergestellt...', wsError: 'WebSocket-Fehler', networkLogTitle: 'Netzwerkanfrage-Protokoll', noRequests: 'Keine Anfragen', totalRequests: 'Gesamte Anfragen', fixStarting: 'Reparatur wird gestartet...', fixFailed: 'Reparatur fehlgeschlagen' },
|
||||
}
|
||||
|
||||
// ── setup (core keys) ──
|
||||
const setup = {
|
||||
vi: { title: 'Thiết lập ban đầu', desc: 'Cài đặt và cấu hình OpenClaw', headerTitle: 'Chào mừng đến ClawPanel', recheck: 'Kiểm tra lại', stepNode: 'Môi trường Node.js', installed: 'Đã cài đặt', downloadNode: 'Tải Node.js', stepGit: 'Git', stepConfig: 'Tệp cấu hình', saveBtn: 'Lưu', resetDefaultBtn: 'Khôi phục mặc định', aiAssistant: 'Trợ lý AI', openAiAssistant: 'Mở trợ lý AI', nextStepsTitle: 'Bước tiếp theo', configModels: 'Cấu hình mô hình', gatewaySetup: 'Cấu hình Gateway', messageChannels: 'Kênh', enterPanel: 'Vào panel', installBtn: 'Cài đặt nhanh', installOpenclaw: 'Cài đặt OpenClaw', installComplete: 'Cài đặt hoàn tất' },
|
||||
es: { title: 'Configuración inicial', desc: 'Instalar y configurar OpenClaw', headerTitle: 'Bienvenido a ClawPanel', recheck: 'Verificar de nuevo', stepNode: 'Entorno Node.js', installed: 'Instalado', downloadNode: 'Descargar Node.js', stepGit: 'Git', stepConfig: 'Archivo de configuración', saveBtn: 'Guardar', resetDefaultBtn: 'Restaurar predeterminado', aiAssistant: 'Asistente IA', openAiAssistant: 'Abrir asistente IA', nextStepsTitle: 'Próximos pasos', configModels: 'Configurar modelos', gatewaySetup: 'Configurar Gateway', messageChannels: 'Canales', enterPanel: 'Entrar al panel', installBtn: 'Instalación rápida', installOpenclaw: 'Instalar OpenClaw', installComplete: 'Instalación completada' },
|
||||
pt: { title: 'Configuração inicial', desc: 'Instalar e configurar OpenClaw', headerTitle: 'Bem-vindo ao ClawPanel', recheck: 'Verificar novamente', stepNode: 'Ambiente Node.js', installed: 'Instalado', downloadNode: 'Baixar Node.js', stepGit: 'Git', stepConfig: 'Arquivo de configuração', saveBtn: 'Salvar', resetDefaultBtn: 'Restaurar padrão', aiAssistant: 'Assistente IA', openAiAssistant: 'Abrir assistente IA', nextStepsTitle: 'Próximos passos', configModels: 'Configurar modelos', gatewaySetup: 'Configurar Gateway', messageChannels: 'Canais', enterPanel: 'Entrar no painel', installBtn: 'Instalação rápida', installOpenclaw: 'Instalar OpenClaw', installComplete: 'Instalação concluída' },
|
||||
ru: { title: 'Начальная настройка', desc: 'Установка и настройка OpenClaw', headerTitle: 'Добро пожаловать в ClawPanel', recheck: 'Проверить снова', stepNode: 'Среда Node.js', installed: 'Установлено', downloadNode: 'Скачать Node.js', stepGit: 'Git', stepConfig: 'Файл конфигурации', saveBtn: 'Сохранить', resetDefaultBtn: 'Восстановить по умолчанию', aiAssistant: 'ИИ-ассистент', openAiAssistant: 'Открыть ИИ-ассистента', nextStepsTitle: 'Следующие шаги', configModels: 'Настроить модели', gatewaySetup: 'Настроить Gateway', messageChannels: 'Каналы', enterPanel: 'Войти в панель', installBtn: 'Быстрая установка', installOpenclaw: 'Установить OpenClaw', installComplete: 'Установка завершена' },
|
||||
fr: { title: 'Configuration initiale', desc: 'Installer et configurer OpenClaw', headerTitle: 'Bienvenue sur ClawPanel', recheck: 'Revérifier', stepNode: 'Environnement Node.js', installed: 'Installé', downloadNode: 'Télécharger Node.js', stepGit: 'Git', stepConfig: 'Fichier de configuration', saveBtn: 'Enregistrer', resetDefaultBtn: 'Restaurer les paramètres par défaut', aiAssistant: 'Assistant IA', openAiAssistant: "Ouvrir l'assistant IA", nextStepsTitle: 'Étapes suivantes', configModels: 'Configurer les modèles', gatewaySetup: 'Configurer Gateway', messageChannels: 'Canaux', enterPanel: 'Entrer dans le panneau', installBtn: 'Installation rapide', installOpenclaw: 'Installer OpenClaw', installComplete: 'Installation terminée' },
|
||||
de: { title: 'Ersteinrichtung', desc: 'OpenClaw installieren und konfigurieren', headerTitle: 'Willkommen bei ClawPanel', recheck: 'Erneut prüfen', stepNode: 'Node.js-Umgebung', installed: 'Installiert', downloadNode: 'Node.js herunterladen', stepGit: 'Git', stepConfig: 'Konfigurationsdatei', saveBtn: 'Speichern', resetDefaultBtn: 'Standard wiederherstellen', aiAssistant: 'KI-Assistent', openAiAssistant: 'KI-Assistent öffnen', nextStepsTitle: 'Nächste Schritte', configModels: 'Modelle konfigurieren', gatewaySetup: 'Gateway konfigurieren', messageChannels: 'Kanäle', enterPanel: 'Panel betreten', installBtn: 'Schnellinstallation', installOpenclaw: 'OpenClaw installieren', installComplete: 'Installation abgeschlossen' },
|
||||
}
|
||||
|
||||
// ── about (core keys) ──
|
||||
const about = {
|
||||
vi: { title: 'Giới thiệu', desc: 'Thông tin phiên bản và dự án ClawPanel', subtitle: 'Bảng quản lý trực quan OpenClaw', sectionCommunity: 'Cộng đồng', sectionContribute: 'Đóng góp', sectionLinks: 'Liên kết', checkingUpdate: 'Đang kiểm tra cập nhật...', official: 'Chính thức', notInstalled: 'Chưa cài đặt', versionLabel: 'Phiên bản', recommended: 'Khuyến nghị', current: 'Hiện tại', upToDate: 'Đã cập nhật', checkUpdateFailed: 'Kiểm tra cập nhật thất bại', submitIssue: 'Gửi Issue', submitPR: 'Gửi PR', officialWebsite: 'Trang web chính thức', openSourceRepo: 'Kho mã nguồn mở' },
|
||||
es: { title: 'Acerca de', desc: 'Información de versión y proyecto de ClawPanel', subtitle: 'Panel de gestión visual de OpenClaw', sectionCommunity: 'Comunidad', sectionContribute: 'Contribuir', sectionLinks: 'Enlaces', checkingUpdate: 'Verificando actualizaciones...', official: 'Oficial', notInstalled: 'No instalado', versionLabel: 'Versión', recommended: 'Recomendado', current: 'Actual', upToDate: 'Actualizado', checkUpdateFailed: 'Error al verificar actualizaciones', submitIssue: 'Enviar Issue', submitPR: 'Enviar PR', officialWebsite: 'Sitio web oficial', openSourceRepo: 'Repositorio de código abierto' },
|
||||
pt: { title: 'Sobre', desc: 'Informações de versão e projeto do ClawPanel', subtitle: 'Painel de gestão visual do OpenClaw', sectionCommunity: 'Comunidade', sectionContribute: 'Contribuir', sectionLinks: 'Links', checkingUpdate: 'Verificando atualizações...', official: 'Oficial', notInstalled: 'Não instalado', versionLabel: 'Versão', recommended: 'Recomendado', current: 'Atual', upToDate: 'Atualizado', checkUpdateFailed: 'Falha ao verificar atualizações', submitIssue: 'Enviar Issue', submitPR: 'Enviar PR', officialWebsite: 'Site oficial', openSourceRepo: 'Repositório de código aberto' },
|
||||
ru: { title: 'О программе', desc: 'Информация о версии и проекте ClawPanel', subtitle: 'Панель визуального управления OpenClaw', sectionCommunity: 'Сообщество', sectionContribute: 'Вклад', sectionLinks: 'Ссылки', checkingUpdate: 'Проверка обновлений...', official: 'Официальный', notInstalled: 'Не установлен', versionLabel: 'Версия', recommended: 'Рекомендуемый', current: 'Текущий', upToDate: 'Актуально', checkUpdateFailed: 'Ошибка проверки обновлений', submitIssue: 'Создать Issue', submitPR: 'Создать PR', officialWebsite: 'Официальный сайт', openSourceRepo: 'Открытый репозиторий' },
|
||||
fr: { title: 'À propos', desc: 'Informations de version et de projet ClawPanel', subtitle: 'Panneau de gestion visuelle OpenClaw', sectionCommunity: 'Communauté', sectionContribute: 'Contribuer', sectionLinks: 'Liens', checkingUpdate: 'Vérification des mises à jour...', official: 'Officiel', notInstalled: 'Non installé', versionLabel: 'Version', recommended: 'Recommandé', current: 'Actuel', upToDate: 'À jour', checkUpdateFailed: 'Échec de la vérification des mises à jour', submitIssue: 'Soumettre un Issue', submitPR: 'Soumettre un PR', officialWebsite: 'Site officiel', openSourceRepo: 'Dépôt open source' },
|
||||
de: { title: 'Über', desc: 'ClawPanel-Version und Projektinformationen', subtitle: 'OpenClaw Visuelles Verwaltungspanel', sectionCommunity: 'Community', sectionContribute: 'Mitwirken', sectionLinks: 'Links', checkingUpdate: 'Suche nach Updates...', official: 'Offiziell', notInstalled: 'Nicht installiert', versionLabel: 'Version', recommended: 'Empfohlen', current: 'Aktuell', upToDate: 'Aktuell', checkUpdateFailed: 'Update-Prüfung fehlgeschlagen', submitIssue: 'Issue einreichen', submitPR: 'PR einreichen', officialWebsite: 'Offizielle Website', openSourceRepo: 'Open-Source-Repository' },
|
||||
}
|
||||
|
||||
// ── assistant (core keys) ──
|
||||
const assistant = {
|
||||
vi: { defaultName: 'Trợ lý AI', welcomeText: 'Xin chào! Tôi là trợ lý AI. Tôi có thể giúp gì cho bạn?', loading: 'Đang tải...', settings: 'Cài đặt', settingsTitle: 'Cài đặt trợ lý', settingsSaved: 'Đã lưu cài đặt', model: 'Mô hình', temperature: 'Nhiệt độ', testSuccess: 'Kết nối thành công', testFailed: 'Kết nối thất bại', testing: 'Đang kiểm tra...', testBtn: 'Kiểm tra kết nối', send: 'Gửi', inputPlaceholder: 'Mô tả vấn đề...', stopped: 'Đã dừng', retry: 'Thử lại', copyText: 'Sao chép văn bản', newSession: 'Phiên mới', deleteSession: 'Xóa phiên', noSessions: 'Không có phiên', sessionList: 'Danh sách phiên', aiThinking: 'Đang suy nghĩ...', confirmAllow: 'Cho phép thực thi', toolExecuting: 'Đang thực thi...', toolDone: 'Thực thi hoàn tất' },
|
||||
es: { defaultName: 'Asistente IA', welcomeText: '¡Hola! Soy el asistente IA. ¿En qué puedo ayudarle?', loading: 'Cargando...', settings: 'Configuración', settingsTitle: 'Configuración del asistente', settingsSaved: 'Configuración guardada', model: 'Modelo', temperature: 'Temperatura', testSuccess: 'Conexión exitosa', testFailed: 'Conexión fallida', testing: 'Probando...', testBtn: 'Probar conexión', send: 'Enviar', inputPlaceholder: 'Describa el problema...', stopped: 'Detenido', retry: 'Reintentar', copyText: 'Copiar texto', newSession: 'Nueva sesión', deleteSession: 'Eliminar sesión', noSessions: 'Sin sesiones', sessionList: 'Lista de sesiones', aiThinking: 'Pensando...', confirmAllow: 'Permitir ejecución', toolExecuting: 'Ejecutando...', toolDone: 'Ejecución completada' },
|
||||
pt: { defaultName: 'Assistente IA', welcomeText: 'Olá! Sou o assistente IA. Como posso ajudar?', loading: 'Carregando...', settings: 'Configurações', settingsTitle: 'Configurações do assistente', settingsSaved: 'Configurações salvas', model: 'Modelo', temperature: 'Temperatura', testSuccess: 'Conexão bem-sucedida', testFailed: 'Conexão falhou', testing: 'Testando...', testBtn: 'Testar conexão', send: 'Enviar', inputPlaceholder: 'Descreva o problema...', stopped: 'Parado', retry: 'Tentar novamente', copyText: 'Copiar texto', newSession: 'Nova sessão', deleteSession: 'Excluir sessão', noSessions: 'Sem sessões', sessionList: 'Lista de sessões', aiThinking: 'Pensando...', confirmAllow: 'Permitir execução', toolExecuting: 'Executando...', toolDone: 'Execução concluída' },
|
||||
ru: { defaultName: 'ИИ-ассистент', welcomeText: 'Здравствуйте! Я ИИ-ассистент. Чем могу помочь?', loading: 'Загрузка...', settings: 'Настройки', settingsTitle: 'Настройки ассистента', settingsSaved: 'Настройки сохранены', model: 'Модель', temperature: 'Температура', testSuccess: 'Подключение успешно', testFailed: 'Ошибка подключения', testing: 'Проверка...', testBtn: 'Проверить подключение', send: 'Отправить', inputPlaceholder: 'Опишите проблему...', stopped: 'Остановлено', retry: 'Повторить', copyText: 'Копировать текст', newSession: 'Новая сессия', deleteSession: 'Удалить сессию', noSessions: 'Нет сессий', sessionList: 'Список сессий', aiThinking: 'Думает...', confirmAllow: 'Разрешить выполнение', toolExecuting: 'Выполняется...', toolDone: 'Выполнение завершено' },
|
||||
fr: { defaultName: 'Assistant IA', welcomeText: 'Bonjour ! Je suis l\'assistant IA. Comment puis-je vous aider ?', loading: 'Chargement...', settings: 'Paramètres', settingsTitle: 'Paramètres de l\'assistant', settingsSaved: 'Paramètres enregistrés', model: 'Modèle', temperature: 'Température', testSuccess: 'Connexion réussie', testFailed: 'Connexion échouée', testing: 'Test en cours...', testBtn: 'Tester la connexion', send: 'Envoyer', inputPlaceholder: 'Décrivez le problème...', stopped: 'Arrêté', retry: 'Réessayer', copyText: 'Copier le texte', newSession: 'Nouvelle session', deleteSession: 'Supprimer la session', noSessions: 'Aucune session', sessionList: 'Liste des sessions', aiThinking: 'Réflexion...', confirmAllow: "Autoriser l'exécution", toolExecuting: 'Exécution...', toolDone: 'Exécution terminée' },
|
||||
de: { defaultName: 'KI-Assistent', welcomeText: 'Hallo! Ich bin der KI-Assistent. Wie kann ich Ihnen helfen?', loading: 'Laden...', settings: 'Einstellungen', settingsTitle: 'Assistenten-Einstellungen', settingsSaved: 'Einstellungen gespeichert', model: 'Modell', temperature: 'Temperatur', testSuccess: 'Verbindung erfolgreich', testFailed: 'Verbindung fehlgeschlagen', testing: 'Wird getestet...', testBtn: 'Verbindung testen', send: 'Senden', inputPlaceholder: 'Problem beschreiben...', stopped: 'Gestoppt', retry: 'Wiederholen', copyText: 'Text kopieren', newSession: 'Neue Sitzung', deleteSession: 'Sitzung löschen', noSessions: 'Keine Sitzungen', sessionList: 'Sitzungsliste', aiThinking: 'Denkt nach...', confirmAllow: 'Ausführung erlauben', toolExecuting: 'Wird ausgeführt...', toolDone: 'Ausführung abgeschlossen' },
|
||||
}
|
||||
|
||||
// Write large modules
|
||||
for (const mod of [
|
||||
['communication', communication], ['channels', channels], ['chat', chat],
|
||||
['chatDebug', chatDebug], ['setup', setup], ['about', about], ['assistant', assistant],
|
||||
]) {
|
||||
for (const lang of LANGS) {
|
||||
if (mod[1][lang]) w(lang, mod[0], mod[1][lang])
|
||||
}
|
||||
}
|
||||
|
||||
console.log('✓ Large modules: communication, channels, chat, chatDebug, setup, about, assistant (6 langs)')
|
||||
console.log('✓ All 18 modules × 6 languages = patch files generated')
|
||||
165
scripts/split-locales.cjs
Normal file
165
scripts/split-locales.cjs
Normal file
@@ -0,0 +1,165 @@
|
||||
/**
|
||||
* 迁移脚本:将单体 JSON 语言包拆分为模块化 JS 文件
|
||||
* 读取 11 种语言 JSON → 生成 src/locales/modules/*.js
|
||||
*/
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
const LOCALES_DIR = path.resolve(__dirname, '../src/locales')
|
||||
const MODULES_DIR = path.resolve(LOCALES_DIR, 'modules')
|
||||
|
||||
function readLang(file) {
|
||||
const p = path.join(LOCALES_DIR, file)
|
||||
return fs.existsSync(p) ? JSON.parse(fs.readFileSync(p, 'utf8')) : {}
|
||||
}
|
||||
|
||||
const zhCN = readLang('zh-CN.json')
|
||||
const en = readLang('en.json')
|
||||
const zhTW = readLang('zh-TW.json')
|
||||
const ja = readLang('ja.json')
|
||||
const ko = readLang('ko.json')
|
||||
const vi = readLang('vi.json')
|
||||
const es = readLang('es.json')
|
||||
const pt = readLang('pt.json')
|
||||
const ru = readLang('ru.json')
|
||||
const fr = readLang('fr.json')
|
||||
const de = readLang('de.json')
|
||||
|
||||
// 模块名映射(JSON key → 文件名)
|
||||
const MODULE_FILE_MAP = {
|
||||
common: 'common',
|
||||
sidebar: 'sidebar',
|
||||
instance: 'instance',
|
||||
dashboard: 'dashboard',
|
||||
services: 'services',
|
||||
settings: 'settings',
|
||||
models: 'models',
|
||||
agents: 'agents',
|
||||
gateway: 'gateway',
|
||||
security: 'security',
|
||||
communication: 'communication',
|
||||
channels: 'channels',
|
||||
memory: 'memory',
|
||||
cron: 'cron',
|
||||
usage: 'usage',
|
||||
skills: 'skills',
|
||||
chat: 'chat',
|
||||
chatDebug: 'chat-debug',
|
||||
setup: 'setup',
|
||||
about: 'about',
|
||||
ext: 'ext',
|
||||
logs: 'logs',
|
||||
assistant: 'assistant',
|
||||
toast: 'toast',
|
||||
modal: 'modal',
|
||||
}
|
||||
|
||||
// 确保输出目录存在
|
||||
if (!fs.existsSync(MODULES_DIR)) {
|
||||
fs.mkdirSync(MODULES_DIR, { recursive: true })
|
||||
}
|
||||
|
||||
// 转义 JS 字符串中的特殊字符
|
||||
function escapeStr(s) {
|
||||
if (typeof s !== 'string') return ''
|
||||
return s
|
||||
.replace(/\\/g, '\\\\')
|
||||
.replace(/'/g, "\\'")
|
||||
.replace(/\n/g, '\\n')
|
||||
.replace(/\r/g, '')
|
||||
}
|
||||
|
||||
// 参数顺序: zhCN, en, zhTW, ja, ko, vi, es, pt, ru, fr, de
|
||||
const LANG_ORDER = [
|
||||
{ key: 'zhCN', fallback: null },
|
||||
{ key: 'en', fallback: null },
|
||||
{ key: 'zhTW', fallback: 'zhCN' },
|
||||
{ key: 'ja', fallback: 'en' },
|
||||
{ key: 'ko', fallback: 'en' },
|
||||
{ key: 'vi', fallback: 'en' },
|
||||
{ key: 'es', fallback: 'en' },
|
||||
{ key: 'pt', fallback: 'en' },
|
||||
{ key: 'ru', fallback: 'en' },
|
||||
{ key: 'fr', fallback: 'en' },
|
||||
{ key: 'de', fallback: 'en' },
|
||||
]
|
||||
|
||||
// 生成一个模块的 JS 源码(11 语言)
|
||||
function generateModule(sectionKey, sections) {
|
||||
const keys = Object.keys(sections.zhCN)
|
||||
const lines = []
|
||||
|
||||
lines.push("import { _ } from '../helper.js'")
|
||||
lines.push('')
|
||||
lines.push('export default {')
|
||||
|
||||
for (const key of keys) {
|
||||
const vals = {}
|
||||
for (const { key: lk } of LANG_ORDER) {
|
||||
vals[lk] = (sections[lk] && sections[lk][key]) || ''
|
||||
}
|
||||
|
||||
// 计算可省略的参数(和 fallback 相同时省略)
|
||||
const params = LANG_ORDER.map(({ key: lk, fallback }) => {
|
||||
if (!fallback) return vals[lk] // zhCN, en 必填
|
||||
return vals[lk] === vals[fallback] ? '' : vals[lk]
|
||||
})
|
||||
|
||||
// 从尾部截断空参数
|
||||
let lastNonEmpty = 1 // 至少保留 zhCN + en
|
||||
for (let i = params.length - 1; i >= 2; i--) {
|
||||
if (params[i]) { lastNonEmpty = i; break }
|
||||
}
|
||||
|
||||
const parts = params.slice(0, lastNonEmpty + 1).map(v => `'${escapeStr(v)}'`)
|
||||
lines.push(` ${safeKey(key)}: _(${parts.join(', ')}),`)
|
||||
}
|
||||
|
||||
lines.push('}')
|
||||
lines.push('')
|
||||
|
||||
return lines.join('\n')
|
||||
}
|
||||
|
||||
// 确保 key 是合法的 JS 标识符,否则加引号
|
||||
function safeKey(key) {
|
||||
if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key)) return key
|
||||
return `'${key}'`
|
||||
}
|
||||
|
||||
let totalKeys = 0
|
||||
let fileCount = 0
|
||||
|
||||
for (const [sectionKey, fileName] of Object.entries(MODULE_FILE_MAP)) {
|
||||
const zhCNSection = zhCN[sectionKey]
|
||||
if (!zhCNSection) {
|
||||
console.warn(`⚠ Section "${sectionKey}" not found in zh-CN.json, skipping`)
|
||||
continue
|
||||
}
|
||||
|
||||
const sections = {
|
||||
zhCN: zhCNSection,
|
||||
en: en[sectionKey] || {},
|
||||
zhTW: zhTW[sectionKey] || {},
|
||||
ja: ja[sectionKey] || {},
|
||||
ko: ko[sectionKey] || {},
|
||||
vi: vi[sectionKey] || {},
|
||||
es: es[sectionKey] || {},
|
||||
pt: pt[sectionKey] || {},
|
||||
ru: ru[sectionKey] || {},
|
||||
fr: fr[sectionKey] || {},
|
||||
de: de[sectionKey] || {},
|
||||
}
|
||||
|
||||
const source = generateModule(sectionKey, sections)
|
||||
const outPath = path.join(MODULES_DIR, `${fileName}.js`)
|
||||
fs.writeFileSync(outPath, source, 'utf8')
|
||||
|
||||
const keyCount = Object.keys(zhCNSection).length
|
||||
totalKeys += keyCount
|
||||
fileCount++
|
||||
console.log(`✓ ${fileName}.js (${keyCount} keys)`)
|
||||
}
|
||||
|
||||
console.log(`\n✓ Done: ${fileCount} module files, ${totalKeys} total keys`)
|
||||
console.log(` Output: ${MODULES_DIR}`)
|
||||
24
scripts/translations/de/about.json
Normal file
24
scripts/translations/de/about.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"title": "Über",
|
||||
"desc": "ClawPanel-Version und Projektinformationen",
|
||||
"subtitle": "OpenClaw Visuelles Verwaltungspanel",
|
||||
"sectionCommunity": "Community",
|
||||
"sectionContribute": "Mitwirken",
|
||||
"sectionLinks": "Links",
|
||||
"checkingUpdate": "Suche nach Updates...",
|
||||
"official": "Offiziell",
|
||||
"notInstalled": "Nicht installiert",
|
||||
"versionLabel": "Version",
|
||||
"recommended": "Empfohlen",
|
||||
"current": "Aktuell",
|
||||
"upToDate": "Aktuell",
|
||||
"checkUpdateFailed": "Update-Prüfung fehlgeschlagen",
|
||||
"joinDiscord": "Discord beitreten",
|
||||
"discordDesc": "Internationale Community",
|
||||
"communityWelcome": "Willkommen in der OpenClaw-Community! Melden Sie Probleme jederzeit, lassen Sie uns gemeinsam AI-Agenten verbessern.",
|
||||
"communityWelcomeIntl": "Welcome to the OpenClaw community! Share ideas, get help, and build amazing AI agents together.",
|
||||
"submitIssue": "Issue einreichen",
|
||||
"submitPR": "PR einreichen",
|
||||
"officialWebsite": "Offizielle Website",
|
||||
"openSourceRepo": "Open-Source-Repository"
|
||||
}
|
||||
23
scripts/translations/de/agents.json
Normal file
23
scripts/translations/de/agents.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"title": "Agenten-Verwaltung",
|
||||
"desc": "OpenClaw-Agenten erstellen und verwalten",
|
||||
"addAgent": "+ Neuer Agent",
|
||||
"noAgents": "Keine Agenten",
|
||||
"loadFailed": "Laden fehlgeschlagen",
|
||||
"default": "Standard",
|
||||
"backup": "Backup",
|
||||
"edit": "Bearbeiten",
|
||||
"delete": "Löschen",
|
||||
"notSet": "Nicht gesetzt",
|
||||
"addTitle": "Neuer Agent",
|
||||
"agentId": "Agent-ID",
|
||||
"agentName": "Name",
|
||||
"agentModel": "Modell",
|
||||
"created": "Agent erstellt",
|
||||
"createFailed": "Erstellen fehlgeschlagen",
|
||||
"editTitle": "Agent bearbeiten — {id}",
|
||||
"updated": "Aktualisiert",
|
||||
"updateFailed": "Aktualisierung fehlgeschlagen",
|
||||
"deleted": "Gelöscht",
|
||||
"deleteFailed": "Löschen fehlgeschlagen"
|
||||
}
|
||||
27
scripts/translations/de/assistant.json
Normal file
27
scripts/translations/de/assistant.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"defaultName": "KI-Assistent",
|
||||
"welcomeText": "Hallo! Ich bin der KI-Assistent. Wie kann ich Ihnen helfen?",
|
||||
"loading": "Laden...",
|
||||
"settings": "Einstellungen",
|
||||
"settingsTitle": "Assistenten-Einstellungen",
|
||||
"settingsSaved": "Einstellungen gespeichert",
|
||||
"model": "Modell",
|
||||
"temperature": "Temperatur",
|
||||
"testSuccess": "Verbindung erfolgreich",
|
||||
"testFailed": "Verbindung fehlgeschlagen",
|
||||
"testing": "Wird getestet...",
|
||||
"testBtn": "Verbindung testen",
|
||||
"send": "Senden",
|
||||
"inputPlaceholder": "Problem beschreiben...",
|
||||
"stopped": "Gestoppt",
|
||||
"retry": "Wiederholen",
|
||||
"copyText": "Text kopieren",
|
||||
"newSession": "Neue Sitzung",
|
||||
"deleteSession": "Sitzung löschen",
|
||||
"noSessions": "Keine Sitzungen",
|
||||
"sessionList": "Sitzungsliste",
|
||||
"aiThinking": "Denkt nach...",
|
||||
"confirmAllow": "Ausführung erlauben",
|
||||
"toolExecuting": "Wird ausgeführt...",
|
||||
"toolDone": "Ausführung abgeschlossen"
|
||||
}
|
||||
32
scripts/translations/de/channels.json
Normal file
32
scripts/translations/de/channels.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"title": "Kanäle",
|
||||
"desc": "Nachrichtenkanäle und Plattformverbindungen verwalten",
|
||||
"addChannel": "+ Kanal hinzufügen",
|
||||
"noChannels": "Keine Kanäle",
|
||||
"channelName": "Kanalname",
|
||||
"platform": "Plattform",
|
||||
"status": "Status",
|
||||
"connected": "Verbunden",
|
||||
"disconnected": "Getrennt",
|
||||
"edit": "Bearbeiten",
|
||||
"delete": "Löschen",
|
||||
"save": "Speichern",
|
||||
"saved": "Gespeichert",
|
||||
"saveFailed": "Speichern fehlgeschlagen",
|
||||
"deleted": "Gelöscht",
|
||||
"loadFailed": "Laden fehlgeschlagen",
|
||||
"testConnection": "Verbindung testen",
|
||||
"testing": "Wird getestet...",
|
||||
"testSuccess": "Verbindung erfolgreich",
|
||||
"testFailed": "Verbindung fehlgeschlagen",
|
||||
"bindAgent": "Agent verknüpfen",
|
||||
"selectAgent": "Agent auswählen",
|
||||
"pairingTitle": "Kopplung",
|
||||
"approve": "Genehmigen",
|
||||
"configTitle": "Kanalkonfiguration",
|
||||
"restartRequired": "Gateway-Neustart erforderlich",
|
||||
"installPlugin": "Plugin installieren",
|
||||
"installing": "Wird installiert...",
|
||||
"installSuccess": "Installiert",
|
||||
"installFailed": "Installation fehlgeschlagen"
|
||||
}
|
||||
22
scripts/translations/de/chat.json
Normal file
22
scripts/translations/de/chat.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"title": "Live-Chat",
|
||||
"desc": "Mit dem Agenten in Echtzeit chatten",
|
||||
"selectAgent": "Agent auswählen",
|
||||
"connecting": "Verbindung wird hergestellt...",
|
||||
"connected": "Verbunden",
|
||||
"disconnected": "Getrennt",
|
||||
"send": "Senden",
|
||||
"inputPlaceholder": "Nachricht eingeben...",
|
||||
"noMessages": "Keine Nachrichten",
|
||||
"clearChat": "Verlauf löschen",
|
||||
"newSession": "Neue Sitzung",
|
||||
"noSessions": "Keine Sitzungen",
|
||||
"copyMessage": "Kopieren",
|
||||
"thinking": "Denkt nach...",
|
||||
"generating": "Wird generiert...",
|
||||
"stop": "Stoppen",
|
||||
"regenerate": "Neu generieren",
|
||||
"modelSelect": "Modell auswählen",
|
||||
"gatewayNotRunning": "Gateway läuft nicht",
|
||||
"startGateway": "Gateway starten"
|
||||
}
|
||||
16
scripts/translations/de/chatDebug.json
Normal file
16
scripts/translations/de/chatDebug.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"title": "Systemdiagnose",
|
||||
"desc": "WebSocket-Verbindungsdiagnose und Netzwerk-Debugging",
|
||||
"wsStatus": "WebSocket-Status",
|
||||
"wsConnect": "Verbinden",
|
||||
"wsDisconnect": "Trennen",
|
||||
"wsConnected": "Verbunden",
|
||||
"wsDisconnected": "Nicht verbunden",
|
||||
"wsConnecting": "Verbindung wird hergestellt...",
|
||||
"wsError": "WebSocket-Fehler",
|
||||
"networkLogTitle": "Netzwerkanfrage-Protokoll",
|
||||
"noRequests": "Keine Anfragen",
|
||||
"totalRequests": "Gesamte Anfragen",
|
||||
"fixStarting": "Reparatur wird gestartet...",
|
||||
"fixFailed": "Reparatur fehlgeschlagen"
|
||||
}
|
||||
42
scripts/translations/de/common.json
Normal file
42
scripts/translations/de/common.json
Normal file
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"save": "Speichern",
|
||||
"cancel": "Abbrechen",
|
||||
"confirm": "Bestätigen",
|
||||
"delete": "Löschen",
|
||||
"edit": "Bearbeiten",
|
||||
"add": "Hinzufügen",
|
||||
"close": "Schließen",
|
||||
"loading": "Laden...",
|
||||
"retry": "Wiederholen",
|
||||
"copy": "Kopieren",
|
||||
"copied": "Kopiert",
|
||||
"search": "Suchen",
|
||||
"refresh": "Aktualisieren",
|
||||
"back": "Zurück",
|
||||
"submit": "Absenden",
|
||||
"reset": "Zurücksetzen",
|
||||
"enabled": "Aktiviert",
|
||||
"disabled": "Deaktiviert",
|
||||
"unknown": "Unbekannt",
|
||||
"none": "Keine",
|
||||
"yes": "Ja",
|
||||
"no": "Nein",
|
||||
"online": "Online",
|
||||
"offline": "Offline",
|
||||
"running": "Läuft",
|
||||
"stopped": "Gestoppt",
|
||||
"error": "Fehler",
|
||||
"success": "Erfolg",
|
||||
"warning": "Warnung",
|
||||
"info": "Info",
|
||||
"loadFailed": "Laden fehlgeschlagen",
|
||||
"saveFailed": "Speichern fehlgeschlagen",
|
||||
"saveSuccess": "Erfolgreich gespeichert",
|
||||
"operationFailed": "Vorgang fehlgeschlagen",
|
||||
"operationSuccess": "Vorgang erfolgreich",
|
||||
"noData": "Keine Daten",
|
||||
"unit": "",
|
||||
"survivalRate": "Verfügbarkeit",
|
||||
"settings": "Einstellungen",
|
||||
"update": "Aktualisieren"
|
||||
}
|
||||
28
scripts/translations/de/communication.json
Normal file
28
scripts/translations/de/communication.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"title": "Kommunikation & Automatisierung",
|
||||
"desc": "Benachrichtigungskanäle und Automatisierungsregeln konfigurieren",
|
||||
"notifyTitle": "Benachrichtigungskanäle",
|
||||
"automationTitle": "Automatisierungsregeln",
|
||||
"addChannel": "+ Kanal hinzufügen",
|
||||
"addRule": "+ Regel hinzufügen",
|
||||
"noChannels": "Keine Kanäle",
|
||||
"noRules": "Keine Regeln",
|
||||
"channelName": "Kanalname",
|
||||
"enabled": "Aktiviert",
|
||||
"disabled": "Deaktiviert",
|
||||
"test": "Test senden",
|
||||
"testing": "Wird getestet...",
|
||||
"testSuccess": "Test erfolgreich",
|
||||
"testFailed": "Test fehlgeschlagen",
|
||||
"save": "Speichern",
|
||||
"saved": "Gespeichert",
|
||||
"saveFailed": "Speichern fehlgeschlagen",
|
||||
"delete": "Löschen",
|
||||
"deleted": "Gelöscht",
|
||||
"deleteFailed": "Löschen fehlgeschlagen",
|
||||
"loadFailed": "Laden fehlgeschlagen",
|
||||
"trigger": "Auslöser",
|
||||
"action": "Aktion",
|
||||
"selectAgent": "Agent auswählen",
|
||||
"approve": "Genehmigen"
|
||||
}
|
||||
19
scripts/translations/de/cron.json
Normal file
19
scripts/translations/de/cron.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"title": "Geplante Aufgaben",
|
||||
"desc": "OpenClaw-Aufgaben verwalten",
|
||||
"addTask": "+ Aufgabe hinzufügen",
|
||||
"noTasks": "Keine Aufgaben",
|
||||
"taskName": "Aufgabenname",
|
||||
"schedule": "Zeitplan",
|
||||
"status": "Status",
|
||||
"active": "Aktiv",
|
||||
"inactive": "Inaktiv",
|
||||
"edit": "Bearbeiten",
|
||||
"delete": "Löschen",
|
||||
"enable": "Aktivieren",
|
||||
"disable": "Deaktivieren",
|
||||
"runNow": "Jetzt ausführen",
|
||||
"created": "Aufgabe erstellt",
|
||||
"deleted": "Aufgabe gelöscht",
|
||||
"loadFailed": "Laden fehlgeschlagen"
|
||||
}
|
||||
32
scripts/translations/de/dashboard.json
Normal file
32
scripts/translations/de/dashboard.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"title": "Dashboard",
|
||||
"desc": "OpenClaw-Statusübersicht",
|
||||
"gateway": "Gateway",
|
||||
"notStarted": "Nicht gestartet",
|
||||
"versionLabel": "Version",
|
||||
"agentFleet": "Agent-Flotte",
|
||||
"defaultAgent": "Standard",
|
||||
"modelPool": "Modell-Pool",
|
||||
"baseServices": "Basisdienste",
|
||||
"controlUI": "Control UI",
|
||||
"restartGw": "Gateway neustarten",
|
||||
"checkUpdate": "Updates prüfen",
|
||||
"createBackup": "Backup erstellen",
|
||||
"recentLogs": "Aktuelle Protokolle",
|
||||
"cliPath": "CLI-Pfad",
|
||||
"retry": "Wiederholen",
|
||||
"notSet": "Nicht gesetzt",
|
||||
"port": "Port",
|
||||
"startBtn": "Starten",
|
||||
"stopBtn": "Stoppen",
|
||||
"restartBtn": "Neustarten",
|
||||
"primaryModel": "Primäres Modell",
|
||||
"noLogs": "Keine Protokolle",
|
||||
"starting": "Wird gestartet...",
|
||||
"stopping": "Wird gestoppt...",
|
||||
"restarting": "Wird neugestartet...",
|
||||
"checking": "Wird geprüft...",
|
||||
"upToDate": "Aktuell",
|
||||
"backingUp": "Backup wird erstellt...",
|
||||
"backupFail": "Backup fehlgeschlagen"
|
||||
}
|
||||
18
scripts/translations/de/ext.json
Normal file
18
scripts/translations/de/ext.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"title": "Erweiterungstools",
|
||||
"desc": "cftunnel und ClawApp verwalten",
|
||||
"cftunnelTitle": "cftunnel",
|
||||
"clawappTitle": "ClawApp",
|
||||
"installBtn": "Schnellinstallation",
|
||||
"status": "Status",
|
||||
"running": "Läuft",
|
||||
"stopped": "Gestoppt",
|
||||
"version": "Version",
|
||||
"startTunnel": "Tunnel starten",
|
||||
"stopTunnel": "Tunnel stoppen",
|
||||
"start": "Starten",
|
||||
"stop": "Stoppen",
|
||||
"installing": "Wird installiert...",
|
||||
"installDone": "Installation abgeschlossen",
|
||||
"installFailed": "Installation fehlgeschlagen"
|
||||
}
|
||||
17
scripts/translations/de/gateway.json
Normal file
17
scripts/translations/de/gateway.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"title": "Gateway",
|
||||
"desc": "Gateway konfigurieren und verwalten",
|
||||
"status": "Status",
|
||||
"running": "Läuft",
|
||||
"stopped": "Gestoppt",
|
||||
"port": "Port",
|
||||
"saveConfig": "Konfiguration speichern",
|
||||
"saved": "Gateway-Konfiguration gespeichert",
|
||||
"saveFailed": "Speichern fehlgeschlagen",
|
||||
"restartRequired": "Gateway-Neustart erforderlich",
|
||||
"restartNow": "Jetzt neustarten",
|
||||
"configLoadFail": "Konfiguration laden fehlgeschlagen",
|
||||
"pairingTitle": "Gerätekopplung",
|
||||
"pairedDevices": "Gekoppelte Geräte",
|
||||
"noPairedDevices": "Keine gekoppelten Geräte"
|
||||
}
|
||||
11
scripts/translations/de/instance.json
Normal file
11
scripts/translations/de/instance.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"local": "Lokal",
|
||||
"remote": "Remote",
|
||||
"docker": "Docker",
|
||||
"addInstance": "Instanz hinzufügen",
|
||||
"addRemote": "Remote-Instanz hinzufügen",
|
||||
"nameLabel": "Name",
|
||||
"endpointLabel": "Panel-Adresse",
|
||||
"adding": "Wird hinzugefügt...",
|
||||
"current": "Aktuell"
|
||||
}
|
||||
17
scripts/translations/de/logs.json
Normal file
17
scripts/translations/de/logs.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"title": "Protokolle",
|
||||
"desc": "OpenClaw-Protokolle anzeigen",
|
||||
"tabGateway": "Gateway",
|
||||
"tabGatewayErr": "Gateway-Fehler",
|
||||
"tabGuardian": "Guardian",
|
||||
"tabBackup": "Backup",
|
||||
"tabAudit": "Audit",
|
||||
"searchPlaceholder": "Suchen...",
|
||||
"refresh": "Aktualisieren",
|
||||
"autoScroll": "Auto-Scrollen",
|
||||
"loading": "Laden...",
|
||||
"empty": "Keine Protokolle",
|
||||
"loadFailed": "Laden fehlgeschlagen",
|
||||
"noResults": "Keine Ergebnisse",
|
||||
"searchFailed": "Suche fehlgeschlagen"
|
||||
}
|
||||
17
scripts/translations/de/memory.json
Normal file
17
scripts/translations/de/memory.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"title": "Speicher",
|
||||
"desc": "Agent-Speicherdateien verwalten",
|
||||
"noFiles": "Keine Dateien",
|
||||
"view": "Ansehen",
|
||||
"download": "Herunterladen",
|
||||
"delete": "Löschen",
|
||||
"upload": "Hochladen",
|
||||
"uploading": "Wird hochgeladen...",
|
||||
"uploaded": "Hochgeladen",
|
||||
"uploadFailed": "Hochladen fehlgeschlagen",
|
||||
"deleted": "Gelöscht",
|
||||
"deleteFailed": "Löschen fehlgeschlagen",
|
||||
"loadFailed": "Laden fehlgeschlagen",
|
||||
"selectAgent": "Agent auswählen",
|
||||
"searchPlaceholder": "Suchen..."
|
||||
}
|
||||
5
scripts/translations/de/modal.json
Normal file
5
scripts/translations/de/modal.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"confirmTitle": "Bestätigen",
|
||||
"confirmOk": "OK",
|
||||
"confirmCancel": "Abbrechen"
|
||||
}
|
||||
21
scripts/translations/de/models.json
Normal file
21
scripts/translations/de/models.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"title": "Modell-Konfiguration",
|
||||
"desc": "KI-Anbieter und Modelle verwalten",
|
||||
"addProvider": "+ Anbieter hinzufügen",
|
||||
"noProviders": "Keine Anbieter",
|
||||
"providerName": "Anbietername",
|
||||
"baseUrl": "Base URL",
|
||||
"apiKey": "API Key",
|
||||
"models": "Modelle",
|
||||
"addModel": "Modell hinzufügen",
|
||||
"saveProvider": "Speichern",
|
||||
"testConnection": "Verbindung testen",
|
||||
"testing": "Test läuft...",
|
||||
"testSuccess": "Verbindung erfolgreich",
|
||||
"testFailed": "Verbindung fehlgeschlagen",
|
||||
"fetchModels": "Modellliste abrufen",
|
||||
"primaryModel": "Primäres Modell",
|
||||
"enabled": "Aktiviert",
|
||||
"disabled": "Deaktiviert",
|
||||
"loadFailed": "Konfiguration laden fehlgeschlagen"
|
||||
}
|
||||
8
scripts/translations/de/security.json
Normal file
8
scripts/translations/de/security.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"title": "Sicherheit",
|
||||
"desc": "OpenClaw-Sicherheitseinstellungen verwalten",
|
||||
"toolPermissions": "Werkzeug-Berechtigungen",
|
||||
"savePermissions": "Berechtigungen speichern",
|
||||
"permSaved": "Berechtigungen gespeichert",
|
||||
"loadFailed": "Einstellungen laden fehlgeschlagen"
|
||||
}
|
||||
23
scripts/translations/de/services.json
Normal file
23
scripts/translations/de/services.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"title": "Dienstverwaltung",
|
||||
"desc": "OpenClaw-Dienste starten, stoppen und überwachen",
|
||||
"gatewayTitle": "Gateway-Dienst",
|
||||
"guardianTitle": "Guardian-Dienst",
|
||||
"status": "Status",
|
||||
"pid": "PID",
|
||||
"uptime": "Betriebszeit",
|
||||
"port": "Port",
|
||||
"host": "Host",
|
||||
"start": "Starten",
|
||||
"stop": "Stoppen",
|
||||
"restart": "Neustarten",
|
||||
"forceKill": "Erzwungen beenden",
|
||||
"viewLogs": "Protokolle ansehen",
|
||||
"starting": "Wird gestartet...",
|
||||
"stopping": "Wird gestoppt...",
|
||||
"restarting": "Wird neugestartet...",
|
||||
"loadFail": "Status laden fehlgeschlagen",
|
||||
"healthCheck": "Zustandsprüfung",
|
||||
"healthOk": "Läuft normal",
|
||||
"healthFail": "Keine Antwort"
|
||||
}
|
||||
13
scripts/translations/de/settings.json
Normal file
13
scripts/translations/de/settings.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"title": "Panel-Einstellungen",
|
||||
"desc": "Netzwerk-, Proxy- und Download-Einstellungen verwalten",
|
||||
"networkProxy": "Netzwerk-Proxy",
|
||||
"modelProxy": "Modell-Anfrage-Proxy",
|
||||
"npmRegistry": "npm Registry",
|
||||
"language": "Anzeigesprache",
|
||||
"languageHint": "Sprache der Benutzeroberfläche wechseln.",
|
||||
"testProxy": "Verbindung testen",
|
||||
"clearProxy": "Proxy deaktivieren",
|
||||
"resetDefault": "Standard wiederherstellen",
|
||||
"restarting": "Wird neugestartet..."
|
||||
}
|
||||
23
scripts/translations/de/setup.json
Normal file
23
scripts/translations/de/setup.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"title": "Ersteinrichtung",
|
||||
"desc": "OpenClaw installieren und konfigurieren",
|
||||
"headerTitle": "Willkommen bei ClawPanel",
|
||||
"recheck": "Erneut prüfen",
|
||||
"stepNode": "Node.js-Umgebung",
|
||||
"installed": "Installiert",
|
||||
"downloadNode": "Node.js herunterladen",
|
||||
"stepGit": "Git",
|
||||
"stepConfig": "Konfigurationsdatei",
|
||||
"saveBtn": "Speichern",
|
||||
"resetDefaultBtn": "Standard wiederherstellen",
|
||||
"aiAssistant": "KI-Assistent",
|
||||
"openAiAssistant": "KI-Assistent öffnen",
|
||||
"nextStepsTitle": "Nächste Schritte",
|
||||
"configModels": "Modelle konfigurieren",
|
||||
"gatewaySetup": "Gateway konfigurieren",
|
||||
"messageChannels": "Kanäle",
|
||||
"enterPanel": "Panel betreten",
|
||||
"installBtn": "Schnellinstallation",
|
||||
"installOpenclaw": "OpenClaw installieren",
|
||||
"installComplete": "Installation abgeschlossen"
|
||||
}
|
||||
29
scripts/translations/de/sidebar.json
Normal file
29
scripts/translations/de/sidebar.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"collapse": "Einklappen",
|
||||
"closeMenu": "Menü schließen",
|
||||
"themeLight": "Hell",
|
||||
"themeDark": "Dunkel",
|
||||
"sectionMonitor": "Überwachung",
|
||||
"sectionConfig": "Konfiguration",
|
||||
"sectionData": "Daten",
|
||||
"sectionExtension": "Erweiterungen",
|
||||
"dashboard": "Dashboard",
|
||||
"assistant": "Assistent",
|
||||
"chat": "Live-Chat",
|
||||
"services": "Dienste",
|
||||
"logs": "Protokolle",
|
||||
"models": "Modelle",
|
||||
"agents": "Agenten",
|
||||
"gateway": "Gateway",
|
||||
"channels": "Kanäle",
|
||||
"communication": "Kommunikation",
|
||||
"security": "Sicherheit",
|
||||
"memory": "Speicher",
|
||||
"cron": "Geplante Aufgaben",
|
||||
"usage": "Nutzung",
|
||||
"skills": "Skills",
|
||||
"settings": "Einstellungen",
|
||||
"chatDebug": "Diagnose",
|
||||
"about": "Über",
|
||||
"setup": "Ersteinrichtung"
|
||||
}
|
||||
19
scripts/translations/de/skills.json
Normal file
19
scripts/translations/de/skills.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"title": "Skills",
|
||||
"desc": "OpenClaw Skills verwalten und installieren",
|
||||
"installed": "Installiert",
|
||||
"available": "Verfügbar",
|
||||
"noSkills": "Keine Skills",
|
||||
"install": "Installieren",
|
||||
"uninstall": "Deinstallieren",
|
||||
"update": "Aktualisieren",
|
||||
"search": "Skills suchen...",
|
||||
"installing": "Wird installiert...",
|
||||
"installSuccess": "Installiert",
|
||||
"installFailed": "Installation fehlgeschlagen",
|
||||
"loadFailed": "Laden fehlgeschlagen",
|
||||
"noResults": "Keine Ergebnisse",
|
||||
"refreshList": "Liste aktualisieren",
|
||||
"checkUpdates": "Nach Updates suchen",
|
||||
"noUpdates": "Alles aktuell"
|
||||
}
|
||||
4
scripts/translations/de/toast.json
Normal file
4
scripts/translations/de/toast.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"copySuccess": "Kopiert",
|
||||
"copyFailed": "Kopieren fehlgeschlagen"
|
||||
}
|
||||
17
scripts/translations/de/usage.json
Normal file
17
scripts/translations/de/usage.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"title": "Nutzung",
|
||||
"desc": "Modell- und Token-Nutzungsstatistiken anzeigen",
|
||||
"totalTokens": "Gesamte Tokens",
|
||||
"totalRequests": "Gesamte Anfragen",
|
||||
"totalCost": "Gesamtkosten",
|
||||
"today": "Heute",
|
||||
"week": "Diese Woche",
|
||||
"month": "Dieser Monat",
|
||||
"all": "Alle",
|
||||
"noData": "Keine Daten",
|
||||
"model": "Modell",
|
||||
"tokens": "Tokens",
|
||||
"loadFailed": "Laden fehlgeschlagen",
|
||||
"chart": "Diagramm",
|
||||
"table": "Tabelle"
|
||||
}
|
||||
24
scripts/translations/es/about.json
Normal file
24
scripts/translations/es/about.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"title": "Acerca de",
|
||||
"desc": "Información de versión y proyecto de ClawPanel",
|
||||
"subtitle": "Panel de gestión visual de OpenClaw",
|
||||
"sectionCommunity": "Comunidad",
|
||||
"sectionContribute": "Contribuir",
|
||||
"sectionLinks": "Enlaces",
|
||||
"checkingUpdate": "Verificando actualizaciones...",
|
||||
"official": "Oficial",
|
||||
"notInstalled": "No instalado",
|
||||
"versionLabel": "Versión",
|
||||
"recommended": "Recomendado",
|
||||
"current": "Actual",
|
||||
"upToDate": "Actualizado",
|
||||
"checkUpdateFailed": "Error al verificar actualizaciones",
|
||||
"joinDiscord": "Unirse a Discord",
|
||||
"discordDesc": "Comunidad internacional",
|
||||
"communityWelcome": "¡Bienvenido a la comunidad OpenClaw! Reporta problemas en cualquier momento, hagamos juntos que los AI Agents sean mejores.",
|
||||
"communityWelcomeIntl": "Welcome to the OpenClaw community! Share ideas, get help, and build amazing AI agents together.",
|
||||
"submitIssue": "Enviar Issue",
|
||||
"submitPR": "Enviar PR",
|
||||
"officialWebsite": "Sitio web oficial",
|
||||
"openSourceRepo": "Repositorio de código abierto"
|
||||
}
|
||||
23
scripts/translations/es/agents.json
Normal file
23
scripts/translations/es/agents.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"title": "Gestión de Agentes",
|
||||
"desc": "Crear y gestionar OpenClaw Agents",
|
||||
"addAgent": "+ Nuevo Agent",
|
||||
"noAgents": "Sin Agentes",
|
||||
"loadFailed": "Error al cargar",
|
||||
"default": "Predeterminado",
|
||||
"backup": "Respaldo",
|
||||
"edit": "Editar",
|
||||
"delete": "Eliminar",
|
||||
"notSet": "No configurado",
|
||||
"addTitle": "Nuevo Agent",
|
||||
"agentId": "Agent ID",
|
||||
"agentName": "Nombre",
|
||||
"agentModel": "Modelo",
|
||||
"created": "Agent creado",
|
||||
"createFailed": "Error al crear",
|
||||
"editTitle": "Editar Agent — {id}",
|
||||
"updated": "Actualizado",
|
||||
"updateFailed": "Error al actualizar",
|
||||
"deleted": "Eliminado",
|
||||
"deleteFailed": "Error al eliminar"
|
||||
}
|
||||
27
scripts/translations/es/assistant.json
Normal file
27
scripts/translations/es/assistant.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"defaultName": "Asistente IA",
|
||||
"welcomeText": "¡Hola! Soy el asistente IA. ¿En qué puedo ayudarle?",
|
||||
"loading": "Cargando...",
|
||||
"settings": "Configuración",
|
||||
"settingsTitle": "Configuración del asistente",
|
||||
"settingsSaved": "Configuración guardada",
|
||||
"model": "Modelo",
|
||||
"temperature": "Temperatura",
|
||||
"testSuccess": "Conexión exitosa",
|
||||
"testFailed": "Conexión fallida",
|
||||
"testing": "Probando...",
|
||||
"testBtn": "Probar conexión",
|
||||
"send": "Enviar",
|
||||
"inputPlaceholder": "Describa el problema...",
|
||||
"stopped": "Detenido",
|
||||
"retry": "Reintentar",
|
||||
"copyText": "Copiar texto",
|
||||
"newSession": "Nueva sesión",
|
||||
"deleteSession": "Eliminar sesión",
|
||||
"noSessions": "Sin sesiones",
|
||||
"sessionList": "Lista de sesiones",
|
||||
"aiThinking": "Pensando...",
|
||||
"confirmAllow": "Permitir ejecución",
|
||||
"toolExecuting": "Ejecutando...",
|
||||
"toolDone": "Ejecución completada"
|
||||
}
|
||||
32
scripts/translations/es/channels.json
Normal file
32
scripts/translations/es/channels.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"title": "Canales",
|
||||
"desc": "Gestionar canales de mensajería y conexiones de plataforma",
|
||||
"addChannel": "+ Agregar canal",
|
||||
"noChannels": "Sin canales",
|
||||
"channelName": "Nombre del canal",
|
||||
"platform": "Plataforma",
|
||||
"status": "Estado",
|
||||
"connected": "Conectado",
|
||||
"disconnected": "Desconectado",
|
||||
"edit": "Editar",
|
||||
"delete": "Eliminar",
|
||||
"save": "Guardar",
|
||||
"saved": "Guardado",
|
||||
"saveFailed": "Error al guardar",
|
||||
"deleted": "Eliminado",
|
||||
"loadFailed": "Error al cargar",
|
||||
"testConnection": "Probar conexión",
|
||||
"testing": "Probando...",
|
||||
"testSuccess": "Conexión exitosa",
|
||||
"testFailed": "Conexión fallida",
|
||||
"bindAgent": "Vincular Agent",
|
||||
"selectAgent": "Seleccionar Agent",
|
||||
"pairingTitle": "Emparejamiento",
|
||||
"approve": "Aprobar",
|
||||
"configTitle": "Configuración del canal",
|
||||
"restartRequired": "Se requiere reiniciar Gateway",
|
||||
"installPlugin": "Instalar plugin",
|
||||
"installing": "Instalando...",
|
||||
"installSuccess": "Instalado",
|
||||
"installFailed": "Instalación fallida"
|
||||
}
|
||||
22
scripts/translations/es/chat.json
Normal file
22
scripts/translations/es/chat.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"title": "Chat en vivo",
|
||||
"desc": "Chatear con el Agent en tiempo real",
|
||||
"selectAgent": "Seleccionar Agent",
|
||||
"connecting": "Conectando...",
|
||||
"connected": "Conectado",
|
||||
"disconnected": "Desconectado",
|
||||
"send": "Enviar",
|
||||
"inputPlaceholder": "Escribe un mensaje...",
|
||||
"noMessages": "Sin mensajes",
|
||||
"clearChat": "Limpiar historial",
|
||||
"newSession": "Nueva sesión",
|
||||
"noSessions": "Sin sesiones",
|
||||
"copyMessage": "Copiar",
|
||||
"thinking": "Pensando...",
|
||||
"generating": "Generando...",
|
||||
"stop": "Detener",
|
||||
"regenerate": "Regenerar",
|
||||
"modelSelect": "Seleccionar modelo",
|
||||
"gatewayNotRunning": "Gateway no está ejecutando",
|
||||
"startGateway": "Iniciar Gateway"
|
||||
}
|
||||
16
scripts/translations/es/chatDebug.json
Normal file
16
scripts/translations/es/chatDebug.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"title": "Diagnóstico del sistema",
|
||||
"desc": "Diagnóstico de conexión WebSocket y depuración de red",
|
||||
"wsStatus": "Estado WebSocket",
|
||||
"wsConnect": "Conectar",
|
||||
"wsDisconnect": "Desconectar",
|
||||
"wsConnected": "Conectado",
|
||||
"wsDisconnected": "No conectado",
|
||||
"wsConnecting": "Conectando...",
|
||||
"wsError": "Error WebSocket",
|
||||
"networkLogTitle": "Registro de solicitudes de red",
|
||||
"noRequests": "Sin solicitudes",
|
||||
"totalRequests": "Total de solicitudes",
|
||||
"fixStarting": "Iniciando reparación...",
|
||||
"fixFailed": "Reparación fallida"
|
||||
}
|
||||
42
scripts/translations/es/common.json
Normal file
42
scripts/translations/es/common.json
Normal file
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"save": "Guardar",
|
||||
"cancel": "Cancelar",
|
||||
"confirm": "Confirmar",
|
||||
"delete": "Eliminar",
|
||||
"edit": "Editar",
|
||||
"add": "Agregar",
|
||||
"close": "Cerrar",
|
||||
"loading": "Cargando...",
|
||||
"retry": "Reintentar",
|
||||
"copy": "Copiar",
|
||||
"copied": "Copiado",
|
||||
"search": "Buscar",
|
||||
"refresh": "Actualizar",
|
||||
"back": "Volver",
|
||||
"submit": "Enviar",
|
||||
"reset": "Restablecer",
|
||||
"enabled": "Habilitado",
|
||||
"disabled": "Deshabilitado",
|
||||
"unknown": "Desconocido",
|
||||
"none": "Ninguno",
|
||||
"yes": "Sí",
|
||||
"no": "No",
|
||||
"online": "En línea",
|
||||
"offline": "Fuera de línea",
|
||||
"running": "Ejecutando",
|
||||
"stopped": "Detenido",
|
||||
"error": "Error",
|
||||
"success": "Éxito",
|
||||
"warning": "Advertencia",
|
||||
"info": "Información",
|
||||
"loadFailed": "Error al cargar",
|
||||
"saveFailed": "Error al guardar",
|
||||
"saveSuccess": "Guardado correctamente",
|
||||
"operationFailed": "Operación fallida",
|
||||
"operationSuccess": "Operación exitosa",
|
||||
"noData": "Sin datos",
|
||||
"unit": "",
|
||||
"survivalRate": "Disponibilidad",
|
||||
"settings": "Configuración",
|
||||
"update": "Actualizar"
|
||||
}
|
||||
28
scripts/translations/es/communication.json
Normal file
28
scripts/translations/es/communication.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"title": "Comunicación y Automatización",
|
||||
"desc": "Configurar canales de notificación y reglas de automatización",
|
||||
"notifyTitle": "Canales de notificación",
|
||||
"automationTitle": "Reglas de automatización",
|
||||
"addChannel": "+ Agregar canal",
|
||||
"addRule": "+ Agregar regla",
|
||||
"noChannels": "Sin canales",
|
||||
"noRules": "Sin reglas",
|
||||
"channelName": "Nombre del canal",
|
||||
"enabled": "Habilitado",
|
||||
"disabled": "Deshabilitado",
|
||||
"test": "Enviar prueba",
|
||||
"testing": "Probando...",
|
||||
"testSuccess": "Prueba exitosa",
|
||||
"testFailed": "Prueba fallida",
|
||||
"save": "Guardar",
|
||||
"saved": "Guardado",
|
||||
"saveFailed": "Error al guardar",
|
||||
"delete": "Eliminar",
|
||||
"deleted": "Eliminado",
|
||||
"deleteFailed": "Error al eliminar",
|
||||
"loadFailed": "Error al cargar",
|
||||
"trigger": "Activador",
|
||||
"action": "Acción",
|
||||
"selectAgent": "Seleccionar Agent",
|
||||
"approve": "Aprobar"
|
||||
}
|
||||
19
scripts/translations/es/cron.json
Normal file
19
scripts/translations/es/cron.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"title": "Tareas programadas",
|
||||
"desc": "Gestionar tareas programadas de OpenClaw",
|
||||
"addTask": "+ Agregar tarea",
|
||||
"noTasks": "Sin tareas",
|
||||
"taskName": "Nombre de tarea",
|
||||
"schedule": "Programación",
|
||||
"status": "Estado",
|
||||
"active": "Activa",
|
||||
"inactive": "Inactiva",
|
||||
"edit": "Editar",
|
||||
"delete": "Eliminar",
|
||||
"enable": "Habilitar",
|
||||
"disable": "Deshabilitar",
|
||||
"runNow": "Ejecutar ahora",
|
||||
"created": "Tarea creada",
|
||||
"deleted": "Tarea eliminada",
|
||||
"loadFailed": "Error al cargar"
|
||||
}
|
||||
32
scripts/translations/es/dashboard.json
Normal file
32
scripts/translations/es/dashboard.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"title": "Panel",
|
||||
"desc": "Resumen del estado de OpenClaw",
|
||||
"gateway": "Gateway",
|
||||
"notStarted": "No iniciado",
|
||||
"versionLabel": "Versión",
|
||||
"agentFleet": "Flota de Agentes",
|
||||
"defaultAgent": "Predeterminado",
|
||||
"modelPool": "Pool de modelos",
|
||||
"baseServices": "Servicios base",
|
||||
"controlUI": "Control UI",
|
||||
"restartGw": "Reiniciar Gateway",
|
||||
"checkUpdate": "Buscar actualizaciones",
|
||||
"createBackup": "Crear respaldo",
|
||||
"recentLogs": "Registros recientes",
|
||||
"cliPath": "Ruta CLI",
|
||||
"retry": "Reintentar",
|
||||
"notSet": "No configurado",
|
||||
"port": "Puerto",
|
||||
"startBtn": "Iniciar",
|
||||
"stopBtn": "Detener",
|
||||
"restartBtn": "Reiniciar",
|
||||
"primaryModel": "Modelo principal",
|
||||
"noLogs": "Sin registros",
|
||||
"starting": "Iniciando...",
|
||||
"stopping": "Deteniendo...",
|
||||
"restarting": "Reiniciando...",
|
||||
"checking": "Verificando...",
|
||||
"upToDate": "Actualizado",
|
||||
"backingUp": "Respaldando...",
|
||||
"backupFail": "Respaldo fallido"
|
||||
}
|
||||
18
scripts/translations/es/ext.json
Normal file
18
scripts/translations/es/ext.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"title": "Herramientas de extensión",
|
||||
"desc": "Gestionar cftunnel y ClawApp",
|
||||
"cftunnelTitle": "cftunnel",
|
||||
"clawappTitle": "ClawApp",
|
||||
"installBtn": "Instalación rápida",
|
||||
"status": "Estado",
|
||||
"running": "Ejecutando",
|
||||
"stopped": "Detenido",
|
||||
"version": "Versión",
|
||||
"startTunnel": "Iniciar túnel",
|
||||
"stopTunnel": "Detener túnel",
|
||||
"start": "Iniciar",
|
||||
"stop": "Detener",
|
||||
"installing": "Instalando...",
|
||||
"installDone": "Instalación completada",
|
||||
"installFailed": "Instalación fallida"
|
||||
}
|
||||
17
scripts/translations/es/gateway.json
Normal file
17
scripts/translations/es/gateway.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"title": "Gateway",
|
||||
"desc": "Configurar y gestionar Gateway",
|
||||
"status": "Estado",
|
||||
"running": "Ejecutando",
|
||||
"stopped": "Detenido",
|
||||
"port": "Puerto",
|
||||
"saveConfig": "Guardar configuración",
|
||||
"saved": "Configuración de Gateway guardada",
|
||||
"saveFailed": "Error al guardar",
|
||||
"restartRequired": "Se requiere reiniciar Gateway",
|
||||
"restartNow": "Reiniciar ahora",
|
||||
"configLoadFail": "Error al cargar configuración",
|
||||
"pairingTitle": "Emparejamiento de dispositivos",
|
||||
"pairedDevices": "Dispositivos emparejados",
|
||||
"noPairedDevices": "Sin dispositivos emparejados"
|
||||
}
|
||||
11
scripts/translations/es/instance.json
Normal file
11
scripts/translations/es/instance.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"local": "Local",
|
||||
"remote": "Remoto",
|
||||
"docker": "Docker",
|
||||
"addInstance": "Agregar instancia",
|
||||
"addRemote": "Agregar instancia remota",
|
||||
"nameLabel": "Nombre",
|
||||
"endpointLabel": "Dirección del panel",
|
||||
"adding": "Agregando...",
|
||||
"current": "Actual"
|
||||
}
|
||||
17
scripts/translations/es/logs.json
Normal file
17
scripts/translations/es/logs.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"title": "Registros",
|
||||
"desc": "Ver registros del servicio OpenClaw",
|
||||
"tabGateway": "Gateway",
|
||||
"tabGatewayErr": "Errores Gateway",
|
||||
"tabGuardian": "Guardian",
|
||||
"tabBackup": "Respaldo",
|
||||
"tabAudit": "Auditoría",
|
||||
"searchPlaceholder": "Buscar...",
|
||||
"refresh": "Actualizar",
|
||||
"autoScroll": "Auto-desplazar",
|
||||
"loading": "Cargando...",
|
||||
"empty": "Sin registros",
|
||||
"loadFailed": "Error al cargar",
|
||||
"noResults": "Sin resultados",
|
||||
"searchFailed": "Búsqueda fallida"
|
||||
}
|
||||
17
scripts/translations/es/memory.json
Normal file
17
scripts/translations/es/memory.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"title": "Memoria",
|
||||
"desc": "Gestionar archivos de memoria del Agent",
|
||||
"noFiles": "Sin archivos",
|
||||
"view": "Ver",
|
||||
"download": "Descargar",
|
||||
"delete": "Eliminar",
|
||||
"upload": "Subir",
|
||||
"uploading": "Subiendo...",
|
||||
"uploaded": "Subido",
|
||||
"uploadFailed": "Error al subir",
|
||||
"deleted": "Eliminado",
|
||||
"deleteFailed": "Error al eliminar",
|
||||
"loadFailed": "Error al cargar",
|
||||
"selectAgent": "Seleccionar Agent",
|
||||
"searchPlaceholder": "Buscar..."
|
||||
}
|
||||
5
scripts/translations/es/modal.json
Normal file
5
scripts/translations/es/modal.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"confirmTitle": "Confirmar",
|
||||
"confirmOk": "Aceptar",
|
||||
"confirmCancel": "Cancelar"
|
||||
}
|
||||
21
scripts/translations/es/models.json
Normal file
21
scripts/translations/es/models.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"title": "Configuración de modelos",
|
||||
"desc": "Gestionar proveedores y modelos de IA",
|
||||
"addProvider": "+ Agregar proveedor",
|
||||
"noProviders": "Sin proveedores",
|
||||
"providerName": "Nombre del proveedor",
|
||||
"baseUrl": "Base URL",
|
||||
"apiKey": "API Key",
|
||||
"models": "Modelos",
|
||||
"addModel": "Agregar modelo",
|
||||
"saveProvider": "Guardar",
|
||||
"testConnection": "Probar conexión",
|
||||
"testing": "Probando...",
|
||||
"testSuccess": "Conexión exitosa",
|
||||
"testFailed": "Conexión fallida",
|
||||
"fetchModels": "Obtener lista de modelos",
|
||||
"primaryModel": "Modelo principal",
|
||||
"enabled": "Habilitado",
|
||||
"disabled": "Deshabilitado",
|
||||
"loadFailed": "Error al cargar configuración"
|
||||
}
|
||||
8
scripts/translations/es/security.json
Normal file
8
scripts/translations/es/security.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"title": "Seguridad",
|
||||
"desc": "Gestionar configuración de seguridad de OpenClaw",
|
||||
"toolPermissions": "Permisos de herramientas",
|
||||
"savePermissions": "Guardar permisos",
|
||||
"permSaved": "Permisos guardados",
|
||||
"loadFailed": "Error al cargar configuración"
|
||||
}
|
||||
23
scripts/translations/es/services.json
Normal file
23
scripts/translations/es/services.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"title": "Gestión de servicios",
|
||||
"desc": "Iniciar, detener y monitorear servicios OpenClaw",
|
||||
"gatewayTitle": "Servicio Gateway",
|
||||
"guardianTitle": "Servicio Guardian",
|
||||
"status": "Estado",
|
||||
"pid": "PID",
|
||||
"uptime": "Tiempo activo",
|
||||
"port": "Puerto",
|
||||
"host": "Host",
|
||||
"start": "Iniciar",
|
||||
"stop": "Detener",
|
||||
"restart": "Reiniciar",
|
||||
"forceKill": "Forzar cierre",
|
||||
"viewLogs": "Ver registros",
|
||||
"starting": "Iniciando...",
|
||||
"stopping": "Deteniendo...",
|
||||
"restarting": "Reiniciando...",
|
||||
"loadFail": "Error al cargar estado",
|
||||
"healthCheck": "Verificación de salud",
|
||||
"healthOk": "Funcionando correctamente",
|
||||
"healthFail": "Sin respuesta"
|
||||
}
|
||||
13
scripts/translations/es/settings.json
Normal file
13
scripts/translations/es/settings.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"title": "Configuración del panel",
|
||||
"desc": "Gestionar configuración de red, proxy y fuentes de descarga",
|
||||
"networkProxy": "Proxy de red",
|
||||
"modelProxy": "Proxy de solicitudes de modelo",
|
||||
"npmRegistry": "npm Registry",
|
||||
"language": "Idioma de visualización",
|
||||
"languageHint": "Cambiar el idioma de la interfaz.",
|
||||
"testProxy": "Probar conexión",
|
||||
"clearProxy": "Desactivar proxy",
|
||||
"resetDefault": "Restaurar predeterminado",
|
||||
"restarting": "Reiniciando..."
|
||||
}
|
||||
23
scripts/translations/es/setup.json
Normal file
23
scripts/translations/es/setup.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"title": "Configuración inicial",
|
||||
"desc": "Instalar y configurar OpenClaw",
|
||||
"headerTitle": "Bienvenido a ClawPanel",
|
||||
"recheck": "Verificar de nuevo",
|
||||
"stepNode": "Entorno Node.js",
|
||||
"installed": "Instalado",
|
||||
"downloadNode": "Descargar Node.js",
|
||||
"stepGit": "Git",
|
||||
"stepConfig": "Archivo de configuración",
|
||||
"saveBtn": "Guardar",
|
||||
"resetDefaultBtn": "Restaurar predeterminado",
|
||||
"aiAssistant": "Asistente IA",
|
||||
"openAiAssistant": "Abrir asistente IA",
|
||||
"nextStepsTitle": "Próximos pasos",
|
||||
"configModels": "Configurar modelos",
|
||||
"gatewaySetup": "Configurar Gateway",
|
||||
"messageChannels": "Canales",
|
||||
"enterPanel": "Entrar al panel",
|
||||
"installBtn": "Instalación rápida",
|
||||
"installOpenclaw": "Instalar OpenClaw",
|
||||
"installComplete": "Instalación completada"
|
||||
}
|
||||
29
scripts/translations/es/sidebar.json
Normal file
29
scripts/translations/es/sidebar.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"collapse": "Colapsar",
|
||||
"closeMenu": "Cerrar menú",
|
||||
"themeLight": "Claro",
|
||||
"themeDark": "Oscuro",
|
||||
"sectionMonitor": "Monitoreo",
|
||||
"sectionConfig": "Configuración",
|
||||
"sectionData": "Datos",
|
||||
"sectionExtension": "Extensiones",
|
||||
"dashboard": "Panel",
|
||||
"assistant": "Asistente",
|
||||
"chat": "Chat",
|
||||
"services": "Servicios",
|
||||
"logs": "Registros",
|
||||
"models": "Modelos",
|
||||
"agents": "Agentes",
|
||||
"gateway": "Gateway",
|
||||
"channels": "Canales",
|
||||
"communication": "Comunicación",
|
||||
"security": "Seguridad",
|
||||
"memory": "Memoria",
|
||||
"cron": "Tareas",
|
||||
"usage": "Uso",
|
||||
"skills": "Skills",
|
||||
"settings": "Configuración",
|
||||
"chatDebug": "Diagnóstico",
|
||||
"about": "Acerca de",
|
||||
"setup": "Configuración inicial"
|
||||
}
|
||||
19
scripts/translations/es/skills.json
Normal file
19
scripts/translations/es/skills.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"title": "Skills",
|
||||
"desc": "Gestionar e instalar OpenClaw Skills",
|
||||
"installed": "Instalados",
|
||||
"available": "Disponibles",
|
||||
"noSkills": "Sin Skills",
|
||||
"install": "Instalar",
|
||||
"uninstall": "Desinstalar",
|
||||
"update": "Actualizar",
|
||||
"search": "Buscar Skills...",
|
||||
"installing": "Instalando...",
|
||||
"installSuccess": "Instalado",
|
||||
"installFailed": "Error al instalar",
|
||||
"loadFailed": "Error al cargar",
|
||||
"noResults": "Sin resultados",
|
||||
"refreshList": "Actualizar lista",
|
||||
"checkUpdates": "Buscar actualizaciones",
|
||||
"noUpdates": "Todo actualizado"
|
||||
}
|
||||
4
scripts/translations/es/toast.json
Normal file
4
scripts/translations/es/toast.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"copySuccess": "Copiado al portapapeles",
|
||||
"copyFailed": "Error al copiar"
|
||||
}
|
||||
17
scripts/translations/es/usage.json
Normal file
17
scripts/translations/es/usage.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"title": "Uso",
|
||||
"desc": "Ver estadísticas de uso de modelos y tokens",
|
||||
"totalTokens": "Tokens totales",
|
||||
"totalRequests": "Solicitudes totales",
|
||||
"totalCost": "Costo total",
|
||||
"today": "Hoy",
|
||||
"week": "Esta semana",
|
||||
"month": "Este mes",
|
||||
"all": "Todo",
|
||||
"noData": "Sin datos",
|
||||
"model": "Modelo",
|
||||
"tokens": "Tokens",
|
||||
"loadFailed": "Error al cargar",
|
||||
"chart": "Gráfico",
|
||||
"table": "Tabla"
|
||||
}
|
||||
24
scripts/translations/fr/about.json
Normal file
24
scripts/translations/fr/about.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"title": "À propos",
|
||||
"desc": "Informations de version et de projet ClawPanel",
|
||||
"subtitle": "Panneau de gestion visuelle OpenClaw",
|
||||
"sectionCommunity": "Communauté",
|
||||
"sectionContribute": "Contribuer",
|
||||
"sectionLinks": "Liens",
|
||||
"checkingUpdate": "Vérification des mises à jour...",
|
||||
"official": "Officiel",
|
||||
"notInstalled": "Non installé",
|
||||
"versionLabel": "Version",
|
||||
"recommended": "Recommandé",
|
||||
"current": "Actuel",
|
||||
"upToDate": "À jour",
|
||||
"checkUpdateFailed": "Échec de la vérification des mises à jour",
|
||||
"joinDiscord": "Rejoindre Discord",
|
||||
"discordDesc": "Communauté internationale",
|
||||
"communityWelcome": "Bienvenue dans la communauté OpenClaw ! Signalez les problèmes à tout moment, construisons ensemble de meilleurs agents IA.",
|
||||
"communityWelcomeIntl": "Welcome to the OpenClaw community! Share ideas, get help, and build amazing AI agents together.",
|
||||
"submitIssue": "Soumettre un Issue",
|
||||
"submitPR": "Soumettre un PR",
|
||||
"officialWebsite": "Site officiel",
|
||||
"openSourceRepo": "Dépôt open source"
|
||||
}
|
||||
23
scripts/translations/fr/agents.json
Normal file
23
scripts/translations/fr/agents.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"title": "Gestion des Agents",
|
||||
"desc": "Créer et gérer les Agents OpenClaw",
|
||||
"addAgent": "+ Nouvel Agent",
|
||||
"noAgents": "Aucun Agent",
|
||||
"loadFailed": "Échec du chargement",
|
||||
"default": "Par défaut",
|
||||
"backup": "Sauvegarde",
|
||||
"edit": "Modifier",
|
||||
"delete": "Supprimer",
|
||||
"notSet": "Non défini",
|
||||
"addTitle": "Nouvel Agent",
|
||||
"agentId": "ID Agent",
|
||||
"agentName": "Nom",
|
||||
"agentModel": "Modèle",
|
||||
"created": "Agent créé",
|
||||
"createFailed": "Échec de la création",
|
||||
"editTitle": "Modifier l'Agent — {id}",
|
||||
"updated": "Mis à jour",
|
||||
"updateFailed": "Échec de la mise à jour",
|
||||
"deleted": "Supprimé",
|
||||
"deleteFailed": "Échec de la suppression"
|
||||
}
|
||||
27
scripts/translations/fr/assistant.json
Normal file
27
scripts/translations/fr/assistant.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"defaultName": "Assistant IA",
|
||||
"welcomeText": "Bonjour ! Je suis l'assistant IA. Comment puis-je vous aider ?",
|
||||
"loading": "Chargement...",
|
||||
"settings": "Paramètres",
|
||||
"settingsTitle": "Paramètres de l'assistant",
|
||||
"settingsSaved": "Paramètres enregistrés",
|
||||
"model": "Modèle",
|
||||
"temperature": "Température",
|
||||
"testSuccess": "Connexion réussie",
|
||||
"testFailed": "Connexion échouée",
|
||||
"testing": "Test en cours...",
|
||||
"testBtn": "Tester la connexion",
|
||||
"send": "Envoyer",
|
||||
"inputPlaceholder": "Décrivez le problème...",
|
||||
"stopped": "Arrêté",
|
||||
"retry": "Réessayer",
|
||||
"copyText": "Copier le texte",
|
||||
"newSession": "Nouvelle session",
|
||||
"deleteSession": "Supprimer la session",
|
||||
"noSessions": "Aucune session",
|
||||
"sessionList": "Liste des sessions",
|
||||
"aiThinking": "Réflexion...",
|
||||
"confirmAllow": "Autoriser l'exécution",
|
||||
"toolExecuting": "Exécution...",
|
||||
"toolDone": "Exécution terminée"
|
||||
}
|
||||
32
scripts/translations/fr/channels.json
Normal file
32
scripts/translations/fr/channels.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"title": "Canaux",
|
||||
"desc": "Gérer les canaux de messagerie et les connexions de plateforme",
|
||||
"addChannel": "+ Ajouter un canal",
|
||||
"noChannels": "Aucun canal",
|
||||
"channelName": "Nom du canal",
|
||||
"platform": "Plateforme",
|
||||
"status": "Statut",
|
||||
"connected": "Connecté",
|
||||
"disconnected": "Déconnecté",
|
||||
"edit": "Modifier",
|
||||
"delete": "Supprimer",
|
||||
"save": "Enregistrer",
|
||||
"saved": "Enregistré",
|
||||
"saveFailed": "Échec de la sauvegarde",
|
||||
"deleted": "Supprimé",
|
||||
"loadFailed": "Échec du chargement",
|
||||
"testConnection": "Tester la connexion",
|
||||
"testing": "Test en cours...",
|
||||
"testSuccess": "Connexion réussie",
|
||||
"testFailed": "Connexion échouée",
|
||||
"bindAgent": "Lier un Agent",
|
||||
"selectAgent": "Sélectionner Agent",
|
||||
"pairingTitle": "Appairage",
|
||||
"approve": "Approuver",
|
||||
"configTitle": "Configuration du canal",
|
||||
"restartRequired": "Redémarrage de Gateway requis",
|
||||
"installPlugin": "Installer le plugin",
|
||||
"installing": "Installation...",
|
||||
"installSuccess": "Installé",
|
||||
"installFailed": "Échec de l'installation"
|
||||
}
|
||||
22
scripts/translations/fr/chat.json
Normal file
22
scripts/translations/fr/chat.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"title": "Chat en direct",
|
||||
"desc": "Discuter avec l'Agent en temps réel",
|
||||
"selectAgent": "Sélectionner Agent",
|
||||
"connecting": "Connexion...",
|
||||
"connected": "Connecté",
|
||||
"disconnected": "Déconnecté",
|
||||
"send": "Envoyer",
|
||||
"inputPlaceholder": "Tapez un message...",
|
||||
"noMessages": "Aucun message",
|
||||
"clearChat": "Effacer l'historique",
|
||||
"newSession": "Nouvelle session",
|
||||
"noSessions": "Aucune session",
|
||||
"copyMessage": "Copier",
|
||||
"thinking": "Réflexion...",
|
||||
"generating": "Génération...",
|
||||
"stop": "Arrêter",
|
||||
"regenerate": "Régénérer",
|
||||
"modelSelect": "Sélectionner un modèle",
|
||||
"gatewayNotRunning": "Gateway n'est pas en cours d'exécution",
|
||||
"startGateway": "Démarrer Gateway"
|
||||
}
|
||||
16
scripts/translations/fr/chatDebug.json
Normal file
16
scripts/translations/fr/chatDebug.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"title": "Diagnostic système",
|
||||
"desc": "Diagnostic de connexion WebSocket et débogage réseau",
|
||||
"wsStatus": "Statut WebSocket",
|
||||
"wsConnect": "Connecter",
|
||||
"wsDisconnect": "Déconnecter",
|
||||
"wsConnected": "Connecté",
|
||||
"wsDisconnected": "Non connecté",
|
||||
"wsConnecting": "Connexion...",
|
||||
"wsError": "Erreur WebSocket",
|
||||
"networkLogTitle": "Journal des requêtes réseau",
|
||||
"noRequests": "Aucune requête",
|
||||
"totalRequests": "Total des requêtes",
|
||||
"fixStarting": "Début de la réparation...",
|
||||
"fixFailed": "Réparation échouée"
|
||||
}
|
||||
42
scripts/translations/fr/common.json
Normal file
42
scripts/translations/fr/common.json
Normal file
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"save": "Enregistrer",
|
||||
"cancel": "Annuler",
|
||||
"confirm": "Confirmer",
|
||||
"delete": "Supprimer",
|
||||
"edit": "Modifier",
|
||||
"add": "Ajouter",
|
||||
"close": "Fermer",
|
||||
"loading": "Chargement...",
|
||||
"retry": "Réessayer",
|
||||
"copy": "Copier",
|
||||
"copied": "Copié",
|
||||
"search": "Rechercher",
|
||||
"refresh": "Actualiser",
|
||||
"back": "Retour",
|
||||
"submit": "Soumettre",
|
||||
"reset": "Réinitialiser",
|
||||
"enabled": "Activé",
|
||||
"disabled": "Désactivé",
|
||||
"unknown": "Inconnu",
|
||||
"none": "Aucun",
|
||||
"yes": "Oui",
|
||||
"no": "Non",
|
||||
"online": "En ligne",
|
||||
"offline": "Hors ligne",
|
||||
"running": "En cours",
|
||||
"stopped": "Arrêté",
|
||||
"error": "Erreur",
|
||||
"success": "Succès",
|
||||
"warning": "Avertissement",
|
||||
"info": "Information",
|
||||
"loadFailed": "Échec du chargement",
|
||||
"saveFailed": "Échec de la sauvegarde",
|
||||
"saveSuccess": "Sauvegardé",
|
||||
"operationFailed": "Opération échouée",
|
||||
"operationSuccess": "Opération réussie",
|
||||
"noData": "Aucune donnée",
|
||||
"unit": "",
|
||||
"survivalRate": "Disponibilité",
|
||||
"settings": "Paramètres",
|
||||
"update": "Mettre à jour"
|
||||
}
|
||||
28
scripts/translations/fr/communication.json
Normal file
28
scripts/translations/fr/communication.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"title": "Communication et Automatisation",
|
||||
"desc": "Configurer les canaux de notification et les règles d'automatisation",
|
||||
"notifyTitle": "Canaux de notification",
|
||||
"automationTitle": "Règles d'automatisation",
|
||||
"addChannel": "+ Ajouter un canal",
|
||||
"addRule": "+ Ajouter une règle",
|
||||
"noChannels": "Aucun canal",
|
||||
"noRules": "Aucune règle",
|
||||
"channelName": "Nom du canal",
|
||||
"enabled": "Activé",
|
||||
"disabled": "Désactivé",
|
||||
"test": "Envoyer un test",
|
||||
"testing": "Test en cours...",
|
||||
"testSuccess": "Test réussi",
|
||||
"testFailed": "Test échoué",
|
||||
"save": "Enregistrer",
|
||||
"saved": "Enregistré",
|
||||
"saveFailed": "Échec de la sauvegarde",
|
||||
"delete": "Supprimer",
|
||||
"deleted": "Supprimé",
|
||||
"deleteFailed": "Échec de la suppression",
|
||||
"loadFailed": "Échec du chargement",
|
||||
"trigger": "Déclencheur",
|
||||
"action": "Action",
|
||||
"selectAgent": "Sélectionner Agent",
|
||||
"approve": "Approuver"
|
||||
}
|
||||
19
scripts/translations/fr/cron.json
Normal file
19
scripts/translations/fr/cron.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"title": "Tâches planifiées",
|
||||
"desc": "Gérer les tâches planifiées OpenClaw",
|
||||
"addTask": "+ Ajouter une tâche",
|
||||
"noTasks": "Aucune tâche",
|
||||
"taskName": "Nom de la tâche",
|
||||
"schedule": "Planification",
|
||||
"status": "Statut",
|
||||
"active": "Active",
|
||||
"inactive": "Inactive",
|
||||
"edit": "Modifier",
|
||||
"delete": "Supprimer",
|
||||
"enable": "Activer",
|
||||
"disable": "Désactiver",
|
||||
"runNow": "Exécuter maintenant",
|
||||
"created": "Tâche créée",
|
||||
"deleted": "Tâche supprimée",
|
||||
"loadFailed": "Échec du chargement"
|
||||
}
|
||||
32
scripts/translations/fr/dashboard.json
Normal file
32
scripts/translations/fr/dashboard.json
Normal file
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"title": "Tableau de bord",
|
||||
"desc": "Vue d'ensemble de l'état OpenClaw",
|
||||
"gateway": "Gateway",
|
||||
"notStarted": "Non démarré",
|
||||
"versionLabel": "Version",
|
||||
"agentFleet": "Flotte d'Agents",
|
||||
"defaultAgent": "Par défaut",
|
||||
"modelPool": "Pool de modèles",
|
||||
"baseServices": "Services de base",
|
||||
"controlUI": "Control UI",
|
||||
"restartGw": "Redémarrer Gateway",
|
||||
"checkUpdate": "Vérifier les mises à jour",
|
||||
"createBackup": "Créer une sauvegarde",
|
||||
"recentLogs": "Journaux récents",
|
||||
"cliPath": "Chemin CLI",
|
||||
"retry": "Réessayer",
|
||||
"notSet": "Non défini",
|
||||
"port": "Port",
|
||||
"startBtn": "Démarrer",
|
||||
"stopBtn": "Arrêter",
|
||||
"restartBtn": "Redémarrer",
|
||||
"primaryModel": "Modèle principal",
|
||||
"noLogs": "Aucun journal",
|
||||
"starting": "Démarrage...",
|
||||
"stopping": "Arrêt...",
|
||||
"restarting": "Redémarrage...",
|
||||
"checking": "Vérification...",
|
||||
"upToDate": "À jour",
|
||||
"backingUp": "Sauvegarde...",
|
||||
"backupFail": "Échec de la sauvegarde"
|
||||
}
|
||||
18
scripts/translations/fr/ext.json
Normal file
18
scripts/translations/fr/ext.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"title": "Outils additionnels",
|
||||
"desc": "Gérer cftunnel et ClawApp",
|
||||
"cftunnelTitle": "cftunnel",
|
||||
"clawappTitle": "ClawApp",
|
||||
"installBtn": "Installation rapide",
|
||||
"status": "Statut",
|
||||
"running": "En cours",
|
||||
"stopped": "Arrêté",
|
||||
"version": "Version",
|
||||
"startTunnel": "Démarrer le tunnel",
|
||||
"stopTunnel": "Arrêter le tunnel",
|
||||
"start": "Démarrer",
|
||||
"stop": "Arrêter",
|
||||
"installing": "Installation...",
|
||||
"installDone": "Installation terminée",
|
||||
"installFailed": "Échec de l'installation"
|
||||
}
|
||||
17
scripts/translations/fr/gateway.json
Normal file
17
scripts/translations/fr/gateway.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"title": "Gateway",
|
||||
"desc": "Configurer et gérer Gateway",
|
||||
"status": "Statut",
|
||||
"running": "En cours",
|
||||
"stopped": "Arrêté",
|
||||
"port": "Port",
|
||||
"saveConfig": "Enregistrer la configuration",
|
||||
"saved": "Configuration Gateway enregistrée",
|
||||
"saveFailed": "Échec de la sauvegarde",
|
||||
"restartRequired": "Redémarrage de Gateway requis",
|
||||
"restartNow": "Redémarrer maintenant",
|
||||
"configLoadFail": "Échec du chargement de la configuration",
|
||||
"pairingTitle": "Appairage des appareils",
|
||||
"pairedDevices": "Appareils appairés",
|
||||
"noPairedDevices": "Aucun appareil appairé"
|
||||
}
|
||||
11
scripts/translations/fr/instance.json
Normal file
11
scripts/translations/fr/instance.json
Normal file
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"local": "Local",
|
||||
"remote": "Distant",
|
||||
"docker": "Docker",
|
||||
"addInstance": "Ajouter une instance",
|
||||
"addRemote": "Ajouter une instance distante",
|
||||
"nameLabel": "Nom",
|
||||
"endpointLabel": "Adresse du panneau",
|
||||
"adding": "Ajout...",
|
||||
"current": "Actuel"
|
||||
}
|
||||
17
scripts/translations/fr/logs.json
Normal file
17
scripts/translations/fr/logs.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"title": "Journaux",
|
||||
"desc": "Voir les journaux OpenClaw",
|
||||
"tabGateway": "Gateway",
|
||||
"tabGatewayErr": "Erreurs Gateway",
|
||||
"tabGuardian": "Guardian",
|
||||
"tabBackup": "Sauvegarde",
|
||||
"tabAudit": "Audit",
|
||||
"searchPlaceholder": "Rechercher...",
|
||||
"refresh": "Actualiser",
|
||||
"autoScroll": "Défilement auto",
|
||||
"loading": "Chargement...",
|
||||
"empty": "Aucun journal",
|
||||
"loadFailed": "Échec du chargement",
|
||||
"noResults": "Aucun résultat",
|
||||
"searchFailed": "Échec de la recherche"
|
||||
}
|
||||
17
scripts/translations/fr/memory.json
Normal file
17
scripts/translations/fr/memory.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"title": "Mémoire",
|
||||
"desc": "Gérer les fichiers mémoire de l'Agent",
|
||||
"noFiles": "Aucun fichier",
|
||||
"view": "Voir",
|
||||
"download": "Télécharger",
|
||||
"delete": "Supprimer",
|
||||
"upload": "Téléverser",
|
||||
"uploading": "Téléversement...",
|
||||
"uploaded": "Téléversé",
|
||||
"uploadFailed": "Échec du téléversement",
|
||||
"deleted": "Supprimé",
|
||||
"deleteFailed": "Échec de la suppression",
|
||||
"loadFailed": "Échec du chargement",
|
||||
"selectAgent": "Sélectionner Agent",
|
||||
"searchPlaceholder": "Rechercher..."
|
||||
}
|
||||
5
scripts/translations/fr/modal.json
Normal file
5
scripts/translations/fr/modal.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"confirmTitle": "Confirmer",
|
||||
"confirmOk": "OK",
|
||||
"confirmCancel": "Annuler"
|
||||
}
|
||||
21
scripts/translations/fr/models.json
Normal file
21
scripts/translations/fr/models.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"title": "Configuration des modèles",
|
||||
"desc": "Gérer les fournisseurs et modèles IA",
|
||||
"addProvider": "+ Ajouter un fournisseur",
|
||||
"noProviders": "Aucun fournisseur",
|
||||
"providerName": "Nom du fournisseur",
|
||||
"baseUrl": "Base URL",
|
||||
"apiKey": "API Key",
|
||||
"models": "Modèles",
|
||||
"addModel": "Ajouter un modèle",
|
||||
"saveProvider": "Enregistrer",
|
||||
"testConnection": "Tester la connexion",
|
||||
"testing": "Test en cours...",
|
||||
"testSuccess": "Connexion réussie",
|
||||
"testFailed": "Connexion échouée",
|
||||
"fetchModels": "Obtenir la liste des modèles",
|
||||
"primaryModel": "Modèle principal",
|
||||
"enabled": "Activé",
|
||||
"disabled": "Désactivé",
|
||||
"loadFailed": "Échec du chargement de la configuration"
|
||||
}
|
||||
8
scripts/translations/fr/security.json
Normal file
8
scripts/translations/fr/security.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"title": "Sécurité",
|
||||
"desc": "Gérer les paramètres de sécurité OpenClaw",
|
||||
"toolPermissions": "Permissions des outils",
|
||||
"savePermissions": "Enregistrer les permissions",
|
||||
"permSaved": "Permissions enregistrées",
|
||||
"loadFailed": "Échec du chargement de la configuration"
|
||||
}
|
||||
23
scripts/translations/fr/services.json
Normal file
23
scripts/translations/fr/services.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"title": "Gestion des services",
|
||||
"desc": "Démarrer, arrêter et surveiller les services OpenClaw",
|
||||
"gatewayTitle": "Service Gateway",
|
||||
"guardianTitle": "Service Guardian",
|
||||
"status": "Statut",
|
||||
"pid": "PID",
|
||||
"uptime": "Temps de fonctionnement",
|
||||
"port": "Port",
|
||||
"host": "Hôte",
|
||||
"start": "Démarrer",
|
||||
"stop": "Arrêter",
|
||||
"restart": "Redémarrer",
|
||||
"forceKill": "Forcer la fermeture",
|
||||
"viewLogs": "Voir les journaux",
|
||||
"starting": "Démarrage...",
|
||||
"stopping": "Arrêt...",
|
||||
"restarting": "Redémarrage...",
|
||||
"loadFail": "Échec du chargement du statut",
|
||||
"healthCheck": "Vérification de santé",
|
||||
"healthOk": "Fonctionne normalement",
|
||||
"healthFail": "Pas de réponse"
|
||||
}
|
||||
13
scripts/translations/fr/settings.json
Normal file
13
scripts/translations/fr/settings.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"title": "Paramètres du panneau",
|
||||
"desc": "Gérer les paramètres réseau, proxy et sources de téléchargement",
|
||||
"networkProxy": "Proxy réseau",
|
||||
"modelProxy": "Proxy des requêtes de modèle",
|
||||
"npmRegistry": "npm Registry",
|
||||
"language": "Langue d'affichage",
|
||||
"languageHint": "Changer la langue de l'interface.",
|
||||
"testProxy": "Tester la connexion",
|
||||
"clearProxy": "Désactiver le proxy",
|
||||
"resetDefault": "Restaurer les paramètres par défaut",
|
||||
"restarting": "Redémarrage..."
|
||||
}
|
||||
23
scripts/translations/fr/setup.json
Normal file
23
scripts/translations/fr/setup.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"title": "Configuration initiale",
|
||||
"desc": "Installer et configurer OpenClaw",
|
||||
"headerTitle": "Bienvenue sur ClawPanel",
|
||||
"recheck": "Revérifier",
|
||||
"stepNode": "Environnement Node.js",
|
||||
"installed": "Installé",
|
||||
"downloadNode": "Télécharger Node.js",
|
||||
"stepGit": "Git",
|
||||
"stepConfig": "Fichier de configuration",
|
||||
"saveBtn": "Enregistrer",
|
||||
"resetDefaultBtn": "Restaurer les paramètres par défaut",
|
||||
"aiAssistant": "Assistant IA",
|
||||
"openAiAssistant": "Ouvrir l'assistant IA",
|
||||
"nextStepsTitle": "Étapes suivantes",
|
||||
"configModels": "Configurer les modèles",
|
||||
"gatewaySetup": "Configurer Gateway",
|
||||
"messageChannels": "Canaux",
|
||||
"enterPanel": "Entrer dans le panneau",
|
||||
"installBtn": "Installation rapide",
|
||||
"installOpenclaw": "Installer OpenClaw",
|
||||
"installComplete": "Installation terminée"
|
||||
}
|
||||
29
scripts/translations/fr/sidebar.json
Normal file
29
scripts/translations/fr/sidebar.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"collapse": "Réduire",
|
||||
"closeMenu": "Fermer le menu",
|
||||
"themeLight": "Clair",
|
||||
"themeDark": "Sombre",
|
||||
"sectionMonitor": "Surveillance",
|
||||
"sectionConfig": "Configuration",
|
||||
"sectionData": "Données",
|
||||
"sectionExtension": "Extensions",
|
||||
"dashboard": "Tableau de bord",
|
||||
"assistant": "Assistant",
|
||||
"chat": "Chat",
|
||||
"services": "Services",
|
||||
"logs": "Journaux",
|
||||
"models": "Modèles",
|
||||
"agents": "Agents",
|
||||
"gateway": "Gateway",
|
||||
"channels": "Canaux",
|
||||
"communication": "Communication",
|
||||
"security": "Sécurité",
|
||||
"memory": "Mémoire",
|
||||
"cron": "Tâches planifiées",
|
||||
"usage": "Utilisation",
|
||||
"skills": "Skills",
|
||||
"settings": "Paramètres",
|
||||
"chatDebug": "Diagnostic",
|
||||
"about": "À propos",
|
||||
"setup": "Configuration initiale"
|
||||
}
|
||||
19
scripts/translations/fr/skills.json
Normal file
19
scripts/translations/fr/skills.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"title": "Skills",
|
||||
"desc": "Gérer et installer les Skills OpenClaw",
|
||||
"installed": "Installés",
|
||||
"available": "Disponibles",
|
||||
"noSkills": "Aucun Skill",
|
||||
"install": "Installer",
|
||||
"uninstall": "Désinstaller",
|
||||
"update": "Mettre à jour",
|
||||
"search": "Rechercher Skills...",
|
||||
"installing": "Installation...",
|
||||
"installSuccess": "Installé",
|
||||
"installFailed": "Échec de l'installation",
|
||||
"loadFailed": "Échec du chargement",
|
||||
"noResults": "Aucun résultat",
|
||||
"refreshList": "Actualiser la liste",
|
||||
"checkUpdates": "Vérifier les mises à jour",
|
||||
"noUpdates": "Tout est à jour"
|
||||
}
|
||||
4
scripts/translations/fr/toast.json
Normal file
4
scripts/translations/fr/toast.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"copySuccess": "Copié",
|
||||
"copyFailed": "Échec de la copie"
|
||||
}
|
||||
17
scripts/translations/fr/usage.json
Normal file
17
scripts/translations/fr/usage.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"title": "Utilisation",
|
||||
"desc": "Voir les statistiques d'utilisation des modèles et tokens",
|
||||
"totalTokens": "Tokens totaux",
|
||||
"totalRequests": "Requêtes totales",
|
||||
"totalCost": "Coût total",
|
||||
"today": "Aujourd'hui",
|
||||
"week": "Cette semaine",
|
||||
"month": "Ce mois",
|
||||
"all": "Tout",
|
||||
"noData": "Aucune donnée",
|
||||
"model": "Modèle",
|
||||
"tokens": "Tokens",
|
||||
"loadFailed": "Échec du chargement",
|
||||
"chart": "Graphique",
|
||||
"table": "Tableau"
|
||||
}
|
||||
59
scripts/translations/ja/about.json
Normal file
59
scripts/translations/ja/about.json
Normal file
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"title": "について",
|
||||
"desc": "ClawPanel バージョンとプロジェクト情報",
|
||||
"subtitle": "OpenClaw ビジュアル管理パネル",
|
||||
"sectionCommunity": "コミュニティ",
|
||||
"sectionProjects": "関連プロジェクト",
|
||||
"sectionContribute": "コントリビュート",
|
||||
"sectionLinks": "リンク",
|
||||
"sectionAboutUs": "私たちについて",
|
||||
"techStack": "ClawPanel は Tauri v2 で構築、フロントエンド Vanilla JS + Vite、バックエンド Rust。",
|
||||
"checkingUpdate": "更新を確認中...",
|
||||
"official": "公式",
|
||||
"chinese": "中国語版",
|
||||
"notInstalled": "未インストール",
|
||||
"recommendedStable": "推奨安定版: {ver}",
|
||||
"switchVersion": "バージョン切替",
|
||||
"installOpenclaw": "OpenClaw をインストール",
|
||||
"uninstall": "アンインストール",
|
||||
"installPath": "インストールパス",
|
||||
"configExists": "設定ファイルあり",
|
||||
"configNotFound": "設定ファイルが見つかりません",
|
||||
"versionLabel": "バージョン",
|
||||
"selectVersion": "バージョンを選択",
|
||||
"btnSwitch": "切替",
|
||||
"btnInstall": "インストール",
|
||||
"tagRecommended": "(推奨安定版)",
|
||||
"tagNeedTest": "(互換性要テスト)",
|
||||
"noVersions": "利用可能なバージョンが見つかりません",
|
||||
"recommended": "推奨",
|
||||
"current": "現在",
|
||||
"operationDone": "操作完了",
|
||||
"updateReady": "準備完了",
|
||||
"reloadApp": "アプリを再読み込み",
|
||||
"rollback": "ロールバック",
|
||||
"newVersion": "新バージョン",
|
||||
"hotUpdate": "ホットアップデート",
|
||||
"fullInstaller": "フルインストーラー",
|
||||
"downloading": "ダウンロード中...",
|
||||
"downloadDone": "更新ダウンロード完了、「アプリを再読み込み」をクリックして適用",
|
||||
"downloadFailed": "ダウンロード失敗: ",
|
||||
"retry": "再試行",
|
||||
"upToDate": "最新です",
|
||||
"checkUpdateFailed": "更新を確認できません",
|
||||
"joinDiscord": "Discord に参加",
|
||||
"discordDesc": "国際コミュニティ",
|
||||
"communityWelcome": "OpenClaw コミュニティへようこそ!問題があればいつでもフィードバックしてください。一緒に AI Agent をより使いやすくしましょう。",
|
||||
"communityWelcomeIntl": "Welcome to the OpenClaw community! Share ideas, get help, and build amazing AI agents together.",
|
||||
"communityDesc": "QR コードをスキャンまたはリンクをクリックしてコミュニティに参加",
|
||||
"contributeDesc": "ClawPanel はオープンソースプロジェクトです。Issue や PR を歓迎します!",
|
||||
"submitIssue": "Issue を提出",
|
||||
"submitPR": "PR を提出",
|
||||
"contributeGuide": "コントリビュートガイド",
|
||||
"viewIssues": "Issues を見る",
|
||||
"officialWebsite": "公式サイト",
|
||||
"productWebsite": "製品サイト",
|
||||
"openSourceRepo": "オープンソースリポジトリ",
|
||||
"businessCoop": "ビジネス連携",
|
||||
"contactViaWebsite": "公式サイトからお問い合わせください"
|
||||
}
|
||||
45
scripts/translations/ja/agents.json
Normal file
45
scripts/translations/ja/agents.json
Normal file
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"title": "Agent 管理",
|
||||
"desc": "OpenClaw Agent の作成と管理、ID・モデル・ワークスペースの設定",
|
||||
"addAgent": "+ 新規 Agent",
|
||||
"noAgents": "Agent なし",
|
||||
"loadFailed": "読み込み失敗",
|
||||
"loadListFailed": "Agent リストの読み込みに失敗",
|
||||
"noDesc": "説明なし",
|
||||
"default": "デフォルト",
|
||||
"backup": "バックアップ",
|
||||
"edit": "編集",
|
||||
"delete": "削除",
|
||||
"labelName": "名前:",
|
||||
"labelModel": "モデル:",
|
||||
"labelWorkspace": "ワークスペース:",
|
||||
"labelBindings": "バインドチャンネル:",
|
||||
"notSet": "未設定",
|
||||
"noBinding": "チャンネル未バインド",
|
||||
"addModelsFirst": "先にモデル設定ページでモデルを追加してください",
|
||||
"addTitle": "新規 Agent",
|
||||
"agentId": "Agent ID",
|
||||
"agentIdPlaceholder": "例: translator(小文字、数字、アンダースコア、ハイフン)",
|
||||
"agentName": "名前",
|
||||
"agentNamePlaceholder": "例: 翻訳アシスタント",
|
||||
"agentEmoji": "Emoji",
|
||||
"agentEmojiPlaceholder": "例: 🌐(任意)",
|
||||
"agentModel": "モデル",
|
||||
"agentWorkspace": "ワークスペースパス",
|
||||
"agentWorkspacePlaceholder": "空欄で自動作成(任意、絶対パス)",
|
||||
"idRequired": "Agent ID を入力してください",
|
||||
"idInvalid": "Agent ID は小文字、数字、アンダースコア、ハイフンのみ使用可能です",
|
||||
"created": "Agent 作成済み",
|
||||
"createdNameFailed": "Agent は作成されましたが名前の設定に失敗しました。後で編集できます。",
|
||||
"createFailed": "作成失敗",
|
||||
"editTitle": "Agent 編集 — {id}",
|
||||
"workspaceReadonly": "作成時に設定、変更不可",
|
||||
"updated": "更新済み",
|
||||
"updateFailed": "更新失敗",
|
||||
"confirmDelete": "Agent「{id}」を削除しますか?\\n\\nこの Agent のすべてのデータと会話が削除されます。",
|
||||
"deleted": "削除済み",
|
||||
"deleteFailed": "削除失敗",
|
||||
"backingUp": "Agent「{id}」をバックアップ中...",
|
||||
"backupDone": "バックアップ完了: {file}",
|
||||
"backupFailed": "バックアップ失敗"
|
||||
}
|
||||
103
scripts/translations/ja/assistant.json
Normal file
103
scripts/translations/ja/assistant.json
Normal file
@@ -0,0 +1,103 @@
|
||||
{
|
||||
"modeChat": "チャット",
|
||||
"modeChatDesc": "会話のみ、ツール不使用",
|
||||
"modePlan": "プランニング",
|
||||
"modePlanDesc": "AI 読み取り専用分析、ツールは閲覧のみ",
|
||||
"modeExecute": "実行",
|
||||
"modeExecuteDesc": "コマンド実行とファイル変更を許可",
|
||||
"modeUnlimited": "無制限",
|
||||
"modeUnlimitedDesc": "危険確認をスキップ、全自動実行",
|
||||
"defaultName": "AI アシスタント",
|
||||
"defaultPersonality": "プロフェッショナル、フレンドリー、親切",
|
||||
"welcomeText": "こんにちは!AI アシスタントです。何かお手伝いできることはありますか?",
|
||||
"loading": "読み込み中...",
|
||||
"settings": "設定",
|
||||
"settingsTitle": "アシスタント設定",
|
||||
"settingsSaved": "設定を保存しました",
|
||||
"settingsTabApi": "API 設定",
|
||||
"settingsTabTools": "ツール",
|
||||
"settingsTabPersona": "ペルソナ",
|
||||
"settingsTabKnowledge": "ナレッジベース",
|
||||
"apiType": "API タイプ",
|
||||
"model": "モデル",
|
||||
"temperature": "温度",
|
||||
"quickSelect": "クイック選択",
|
||||
"visitSite": "サイトを訪問",
|
||||
"notConfigured": "未設定",
|
||||
"testConnTitle": "接続テスト",
|
||||
"testSuccess": "接続成功",
|
||||
"testFailed": "接続失敗",
|
||||
"testNoReply": "(応答なし)",
|
||||
"testFillUrlKey": "先に Base URL と API Key を入力してください",
|
||||
"testFillUrl": "先に Base URL を入力してください",
|
||||
"testFillModel": "先にモデル名を入力してください",
|
||||
"testing": "テスト中...",
|
||||
"testSending": "テストリクエスト送信中...",
|
||||
"testBtn": "接続テスト",
|
||||
"fetching": "取得中...",
|
||||
"fetchingModels": "モデルリスト取得中...",
|
||||
"fetchModelsTitle": "モデルリスト取得",
|
||||
"fetchBtn": "リスト取得",
|
||||
"noModelsFound": "利用可能なモデルが見つかりません",
|
||||
"modelsFound": "{count} モデルが見つかりました",
|
||||
"personaSource": "ペルソナソース",
|
||||
"personaDefault": "デフォルト",
|
||||
"personaOpenClaw": "OpenClaw Agent",
|
||||
"personaOpenClawHint": "OpenClaw Agent からIDとワークスペース設定を継承",
|
||||
"personaName": "アシスタント名",
|
||||
"personaPersonality": "アシスタント性格",
|
||||
"personaPersonalityHint": "アシスタントの性格特性を説明",
|
||||
"personaSelectAgent": "Agent を選択",
|
||||
"personaSelectFirst": "先に Agent を選択してください",
|
||||
"kbDesc": "カスタムナレッジベース、AI 回答時に参照されます",
|
||||
"kbEmpty": "ナレッジベースエントリなし",
|
||||
"kbNamePlaceholder": "ナレッジベース名",
|
||||
"kbContentPlaceholder": "ナレッジベース内容...",
|
||||
"kbNameRequired": "名前を入力してください",
|
||||
"kbContentRequired": "内容を入力してください",
|
||||
"kbSave": "保存",
|
||||
"toolFilterAll": "すべて",
|
||||
"toolNoDesc": "説明なし",
|
||||
"toolsAlwaysAvailable": "常に利用可能",
|
||||
"toolsHint": "有効にするツールカテゴリを選択",
|
||||
"toolExecuting": "実行中...",
|
||||
"toolDone": "実行完了",
|
||||
"toolDenied": "ユーザーが実行を拒否",
|
||||
"toolExecFail": "実行失敗",
|
||||
"toolUnknown": "不明なツール",
|
||||
"toolRejected": "ユーザーがこの操作を拒否しました",
|
||||
"toolRejectedDanger": "ユーザーが危険な操作を拒否しました",
|
||||
"askConfirm": "確認",
|
||||
"askSkip": "スキップ",
|
||||
"askSkipped": "(スキップ済み)",
|
||||
"confirmRunCmd": "以下のコマンドを実行します",
|
||||
"confirmCwd": "作業ディレクトリ",
|
||||
"confirmWriteFile": "以下のファイルに書き込みます",
|
||||
"confirmPreview": "内容プレビュー",
|
||||
"confirmAllow": "実行を許可",
|
||||
"confirmAiRequest": "AI が以下の操作を要求しています",
|
||||
"aiThinking": "考え中...",
|
||||
"aiProcessingRound": "第 {round} ラウンド処理中...",
|
||||
"toolLoopQuestion": "AI が {round} ラウンドのツール呼び出しを実行しました。続行しますか?",
|
||||
"toolLoopContinue": "さらに {rounds} ラウンド自動実行",
|
||||
"toolLoopNoBreak": "中断せず継続実行",
|
||||
"toolLoopRethink": "AI に再考させる",
|
||||
"toolLoopStop": "実行停止",
|
||||
"send": "送信",
|
||||
"inputPlaceholder": "問題を説明、ログやスクリーンショットを貼り付け...",
|
||||
"inputHint": "Enter で送信 · Shift+Enter で改行 · 画像貼り付け/ドラッグ対応 · AI アシスタントは OpenClaw とは独立",
|
||||
"stopped": "停止",
|
||||
"retry": "再試行",
|
||||
"copyText": "テキストをコピー",
|
||||
"copyMd": "Markdown をコピー",
|
||||
"copiedText": "テキストをコピーしました",
|
||||
"copiedMd": "Markdown をコピーしました",
|
||||
"uploadImage": "画像アップロード",
|
||||
"newSession": "新しいセッション",
|
||||
"deleteSession": "セッション削除",
|
||||
"noSessions": "セッションなし",
|
||||
"confirmDeleteSession": "このセッションを削除しますか?",
|
||||
"sessionList": "セッションリスト",
|
||||
"errConfigFirst": "先に設定で API を設定してください",
|
||||
"errTimeout": "リクエストタイムアウト"
|
||||
}
|
||||
100
scripts/translations/ja/channels.json
Normal file
100
scripts/translations/ja/channels.json
Normal file
@@ -0,0 +1,100 @@
|
||||
{
|
||||
"title": "チャンネル",
|
||||
"desc": "メッセージチャンネルの管理とプラットフォーム接続",
|
||||
"addChannel": "+ チャンネル追加",
|
||||
"noChannels": "チャンネルなし",
|
||||
"channelName": "チャンネル名",
|
||||
"platform": "プラットフォーム",
|
||||
"status": "ステータス",
|
||||
"connected": "接続済み",
|
||||
"disconnected": "未接続",
|
||||
"actions": "操作",
|
||||
"edit": "編集",
|
||||
"delete": "削除",
|
||||
"enable": "有効化",
|
||||
"disable": "無効化",
|
||||
"save": "保存",
|
||||
"saving": "保存中...",
|
||||
"saved": "保存済み",
|
||||
"saveFailed": "保存失敗",
|
||||
"confirmDelete": "チャンネル「{name}」を削除しますか?",
|
||||
"deleted": "削除済み",
|
||||
"deleteFailed": "削除失敗",
|
||||
"loadFailed": "チャンネルの読み込みに失敗",
|
||||
"testConnection": "接続テスト",
|
||||
"testing": "テスト中...",
|
||||
"testSuccess": "接続成功",
|
||||
"testFailed": "接続失敗",
|
||||
"nameRequired": "チャンネル名を入力してください",
|
||||
"namePlaceholder": "例: メインチャンネル",
|
||||
"bindAgent": "Agent をバインド",
|
||||
"unbindAgent": "バインド解除",
|
||||
"selectAgent": "Agent を選択",
|
||||
"noAgentBound": "Agent 未バインド",
|
||||
"boundTo": "{agent} にバインド済み",
|
||||
"bindSuccess": "バインド成功",
|
||||
"bindFailed": "バインド失敗",
|
||||
"pairingTitle": "ペアリング",
|
||||
"pairingDesc": "デバイスペアリングを管理",
|
||||
"pairingCode": "ペアリングコード",
|
||||
"pairingCodePlaceholder": "ペアリングコードを入力",
|
||||
"approve": "承認",
|
||||
"approvePairing": "ペアリング承認",
|
||||
"approving": "承認中...",
|
||||
"approved": "承認済み",
|
||||
"approveFailed": "承認失敗",
|
||||
"noPendingPairing": "保留中のペアリングなし",
|
||||
"refreshPairing": "更新",
|
||||
"pendingCount": "{count} 件保留中",
|
||||
"configTitle": "チャンネル設定",
|
||||
"guideTitle": "設定ガイド",
|
||||
"guideSteps": "設定手順",
|
||||
"step": "ステップ",
|
||||
"pluginRequired": "プラグインが必要",
|
||||
"pluginInstalled": "プラグインインストール済み",
|
||||
"pluginNotInstalled": "プラグイン未インストール",
|
||||
"installPlugin": "プラグインインストール",
|
||||
"installing": "インストール中...",
|
||||
"installSuccess": "インストール成功",
|
||||
"installFailed": "インストール失敗",
|
||||
"restartRequired": "変更を反映するには Gateway の再起動が必要です",
|
||||
"restartGateway": "Gateway を再起動",
|
||||
"advanced": "詳細設定",
|
||||
"basicConfig": "基本設定",
|
||||
"qqTitle": "QQ",
|
||||
"qqDesc": "QQ プラットフォームに接続",
|
||||
"dingtalkTitle": "DingTalk",
|
||||
"dingtalkDesc": "DingTalk に接続",
|
||||
"feishuTitle": "Feishu",
|
||||
"feishuDesc": "Feishu に接続",
|
||||
"telegramTitle": "Telegram",
|
||||
"telegramDesc": "Telegram Bot に接続",
|
||||
"discordTitle": "Discord",
|
||||
"discordDesc": "Discord Bot に接続",
|
||||
"slackTitle": "Slack",
|
||||
"slackDesc": "Slack に接続",
|
||||
"wechatTitle": "WeChat",
|
||||
"wechatDesc": "WeChat に接続",
|
||||
"teamsTitle": "MS Teams",
|
||||
"teamsDesc": "Microsoft Teams に接続",
|
||||
"signalTitle": "Signal",
|
||||
"signalDesc": "Signal に接続",
|
||||
"matrixTitle": "Matrix",
|
||||
"matrixDesc": "Matrix プロトコルに接続",
|
||||
"whatsappTitle": "WhatsApp",
|
||||
"whatsappDesc": "WhatsApp に接続",
|
||||
"lineTitle": "LINE",
|
||||
"lineDesc": "LINE に接続",
|
||||
"botToken": "Bot トークン",
|
||||
"botTokenPlaceholder": "Bot トークンを入力",
|
||||
"appId": "App ID",
|
||||
"appIdPlaceholder": "App ID を入力",
|
||||
"appSecret": "App Secret",
|
||||
"appSecretPlaceholder": "App Secret を入力",
|
||||
"webhookUrl": "Webhook URL",
|
||||
"webhookSecret": "Webhook Secret",
|
||||
"groupId": "グループ ID",
|
||||
"groupIdPlaceholder": "グループ ID を入力",
|
||||
"verifyToken": "検証トークン",
|
||||
"encryptKey": "暗号化キー"
|
||||
}
|
||||
73
scripts/translations/ja/chat.json
Normal file
73
scripts/translations/ja/chat.json
Normal file
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"title": "ライブチャット",
|
||||
"desc": "Agent とリアルタイムで会話",
|
||||
"noAgent": "Agent が見つかりません",
|
||||
"selectAgent": "Agent を選択",
|
||||
"connecting": "接続中...",
|
||||
"connected": "接続済み",
|
||||
"disconnected": "切断",
|
||||
"reconnecting": "再接続中...",
|
||||
"reconnectFailed": "再接続に失敗",
|
||||
"send": "送信",
|
||||
"sending": "送信中...",
|
||||
"inputPlaceholder": "メッセージを入力...",
|
||||
"noMessages": "メッセージなし",
|
||||
"clearChat": "チャット履歴をクリア",
|
||||
"confirmClear": "チャット履歴をクリアしますか?",
|
||||
"cleared": "チャット履歴をクリアしました",
|
||||
"newSession": "新しいセッション",
|
||||
"deleteSession": "セッション削除",
|
||||
"sessionList": "セッションリスト",
|
||||
"noSessions": "セッションなし",
|
||||
"confirmDeleteSession": "このセッションを削除しますか?",
|
||||
"typingIndicator": "入力中...",
|
||||
"copyMessage": "メッセージをコピー",
|
||||
"retryMessage": "再試行",
|
||||
"deleteMessage": "メッセージを削除",
|
||||
"messageDeleted": "メッセージ削除済み",
|
||||
"connectionLost": "接続が失われました",
|
||||
"connectionRestored": "接続が復元されました",
|
||||
"wsConnecting": "WebSocket 接続中...",
|
||||
"wsConnected": "WebSocket 接続済み",
|
||||
"wsDisconnected": "WebSocket 切断",
|
||||
"wsError": "WebSocket エラー",
|
||||
"wsReconnect": "再接続",
|
||||
"modelSelect": "モデル選択",
|
||||
"loadingModels": "モデル読み込み中...",
|
||||
"modelChanged": "モデルを {model} に変更しました",
|
||||
"modelChangeFailed": "モデル変更に失敗",
|
||||
"sendFailed": "送信失敗",
|
||||
"rateLimited": "レート制限中、しばらくお待ちください",
|
||||
"attachImage": "画像を添付",
|
||||
"imageUploaded": "画像アップロード済み",
|
||||
"imageTooLarge": "画像が大きすぎます(10MB 以下)",
|
||||
"fileNotSupported": "サポートされていないファイル形式",
|
||||
"scrollToBottom": "最下部にスクロール",
|
||||
"unreadMessages": "{count} 件の未読メッセージ",
|
||||
"online": "オンライン",
|
||||
"offline": "オフライン",
|
||||
"thinking": "考え中...",
|
||||
"generating": "生成中...",
|
||||
"stopped": "停止",
|
||||
"stop": "停止",
|
||||
"regenerate": "再生成",
|
||||
"editMessage": "メッセージを編集",
|
||||
"saveEdit": "編集を保存",
|
||||
"cancelEdit": "キャンセル",
|
||||
"exportChat": "チャットをエクスポート",
|
||||
"importChat": "チャットをインポート",
|
||||
"markdownMode": "Markdown モード",
|
||||
"rawMode": "Raw モード",
|
||||
"codeBlock": "コードブロック",
|
||||
"copyCode": "コードをコピー",
|
||||
"agentInfo": "Agent 情報",
|
||||
"sessionInfo": "セッション情報",
|
||||
"createdAt": "作成日時",
|
||||
"messageCount": "{count} メッセージ",
|
||||
"tokenUsage": "トークン使用量",
|
||||
"sidebarOpen": "サイドバーを開く",
|
||||
"sidebarClose": "サイドバーを閉じる",
|
||||
"gatewayNotRunning": "Gateway が実行されていません",
|
||||
"startGateway": "Gateway を起動",
|
||||
"pairFirst": "先にデバイスペアリングを行ってください"
|
||||
}
|
||||
55
scripts/translations/ja/chatDebug.json
Normal file
55
scripts/translations/ja/chatDebug.json
Normal file
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"title": "システム診断",
|
||||
"desc": "WebSocket 接続診断とネットワークデバッグ",
|
||||
"wsStatus": "WebSocket ステータス",
|
||||
"wsConnect": "接続",
|
||||
"wsDisconnect": "切断",
|
||||
"wsReconnect": "再接続",
|
||||
"wsConnected": "接続済み",
|
||||
"wsDisconnected": "未接続",
|
||||
"wsConnecting": "接続中...",
|
||||
"wsHandshakeOk": "ハンドシェイク成功!",
|
||||
"wsHandshakeFailed": "ハンドシェイク失敗",
|
||||
"wsParseFailed": "メッセージ解析失敗",
|
||||
"wsRawData": "Raw データ",
|
||||
"wsError": "WebSocket エラー",
|
||||
"wsClosed": "接続終了",
|
||||
"wsOriginRejected": "origin not allowed (1008) - Gateway が現在のアプリの origin を拒否しました",
|
||||
"wsOriginFix": "解決方法:「ワンクリック修復」をクリックすると、tauri://localhost がホワイトリストに追加され Gateway が再起動されます",
|
||||
"wsAuthFailed": "認証失敗 (4001) - トークンが正しくない可能性があります",
|
||||
"wsAbnormalClose": "異常終了 (1006) - ネットワークの問題か Gateway が切断した可能性があります",
|
||||
"wsCreateFailed": "WebSocket 作成失敗",
|
||||
"wsConfigReadFailed": "設定の読み込みに失敗",
|
||||
"networkLogTitle": "ネットワークリクエストログ(最新 100 件)",
|
||||
"noRequests": "リクエスト記録なし",
|
||||
"totalRequests": "合計リクエスト",
|
||||
"cacheHit": "キャッシュヒット",
|
||||
"avgDuration": "平均所要時間",
|
||||
"colTime": "時間",
|
||||
"colCommand": "コマンド",
|
||||
"colArgs": "引数",
|
||||
"colDuration": "所要時間",
|
||||
"colCache": "キャッシュ",
|
||||
"fixStarting": "修復開始...",
|
||||
"fixWritingPair": "デバイスペアリング情報と Gateway origin ホワイトリストを書き込み中...",
|
||||
"fixOriginAdded": "tauri://localhost を gateway.controlUi.allowedOrigins に追加しました",
|
||||
"fixStoppingGw": "Gateway サービスを停止中...",
|
||||
"fixWaitExit": "プロセス終了待ち(3秒)...",
|
||||
"fixStartingGw": "Gateway サービスを起動中...",
|
||||
"fixGwStartSent": "Gateway 起動コマンド送信済み",
|
||||
"fixWaitReady": "Gateway 準備待ち(5秒)...",
|
||||
"fixCheckStatus": "Gateway ステータス確認中...",
|
||||
"fixGwStarted": "Gateway が起動しました",
|
||||
"fixGwMaybeStarting": "Gateway はまだ起動中の可能性があります。後で手動テストしてください",
|
||||
"fixTestingWs": "WebSocket 接続テスト中...",
|
||||
"fixReceivedChallenge": "connect.challenge を受信",
|
||||
"fixFrameSent": "connect フレーム送信済み",
|
||||
"fixPairSuccess": "ハンドシェイク成功!ペアリングの問題が修復されました!",
|
||||
"fixReconnecting": "メインアプリの WebSocket 接続を再確立中...",
|
||||
"fixOriginStillRejected": "原因:Gateway が現在のアプリの origin を拒否しました。Gateway の再起動が必要です",
|
||||
"fixSuggestManualRestart": "「サービス管理」ページで Gateway を手動で再起動してください",
|
||||
"fixWsConnFailed": "WebSocket 接続失敗、Gateway が実行中か確認してください",
|
||||
"fixOriginRejected1008": "接続拒否 (1008) - Gateway が現在の origin を拒否しました",
|
||||
"fixRetryHint": "この問題は今回の修復で処理されたはずです。もう一度「ワンクリック修復」をクリックしてください",
|
||||
"fixFailed": "修復失敗"
|
||||
}
|
||||
42
scripts/translations/ja/common.json
Normal file
42
scripts/translations/ja/common.json
Normal file
@@ -0,0 +1,42 @@
|
||||
{
|
||||
"save": "保存",
|
||||
"cancel": "キャンセル",
|
||||
"confirm": "確認",
|
||||
"delete": "削除",
|
||||
"edit": "編集",
|
||||
"add": "追加",
|
||||
"close": "閉じる",
|
||||
"loading": "読み込み中...",
|
||||
"retry": "再試行",
|
||||
"copy": "コピー",
|
||||
"copied": "コピーしました",
|
||||
"search": "検索",
|
||||
"refresh": "更新",
|
||||
"back": "戻る",
|
||||
"submit": "送信",
|
||||
"reset": "リセット",
|
||||
"enabled": "有効",
|
||||
"disabled": "無効",
|
||||
"unknown": "不明",
|
||||
"none": "なし",
|
||||
"yes": "はい",
|
||||
"no": "いいえ",
|
||||
"online": "オンライン",
|
||||
"offline": "オフライン",
|
||||
"running": "実行中",
|
||||
"stopped": "停止",
|
||||
"error": "エラー",
|
||||
"success": "成功",
|
||||
"warning": "警告",
|
||||
"info": "情報",
|
||||
"loadFailed": "読み込み失敗",
|
||||
"saveFailed": "保存失敗",
|
||||
"saveSuccess": "保存しました",
|
||||
"operationFailed": "操作失敗",
|
||||
"operationSuccess": "操作成功",
|
||||
"noData": "データなし",
|
||||
"unit": "個",
|
||||
"survivalRate": "稼働率",
|
||||
"settings": "設定",
|
||||
"update": "更新"
|
||||
}
|
||||
73
scripts/translations/ja/communication.json
Normal file
73
scripts/translations/ja/communication.json
Normal file
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"title": "通信と自動化",
|
||||
"desc": "通知チャンネルと自動化ルールの設定",
|
||||
"notifyTitle": "通知チャンネル",
|
||||
"notifyDesc": "Agent のメッセージ通知先を設定",
|
||||
"automationTitle": "自動化ルール",
|
||||
"automationDesc": "イベントトリガーによる自動処理ルール",
|
||||
"addChannel": "+ チャンネル追加",
|
||||
"addRule": "+ ルール追加",
|
||||
"noChannels": "通知チャンネルなし",
|
||||
"noRules": "自動化ルールなし",
|
||||
"channelType": "チャンネルタイプ",
|
||||
"webhook": "Webhook",
|
||||
"email": "メール",
|
||||
"slack": "Slack",
|
||||
"discord": "Discord",
|
||||
"telegram": "Telegram",
|
||||
"dingtalk": "DingTalk",
|
||||
"feishu": "Feishu",
|
||||
"wechat": "WeChat",
|
||||
"custom": "カスタム",
|
||||
"channelName": "チャンネル名",
|
||||
"namePlaceholder": "例: チーム通知",
|
||||
"urlPlaceholder": "Webhook URL",
|
||||
"enabled": "有効",
|
||||
"disabled": "無効",
|
||||
"test": "テスト送信",
|
||||
"testing": "テスト中...",
|
||||
"testSuccess": "テスト送信成功",
|
||||
"testFailed": "テスト送信失敗",
|
||||
"save": "保存",
|
||||
"saving": "保存中...",
|
||||
"saved": "保存済み",
|
||||
"saveFailed": "保存失敗",
|
||||
"delete": "削除",
|
||||
"confirmDelete": "{name} を削除しますか?",
|
||||
"deleted": "削除済み",
|
||||
"deleteFailed": "削除失敗",
|
||||
"loadFailed": "読み込み失敗",
|
||||
"ruleTitle": "ルール名",
|
||||
"ruleTitlePlaceholder": "例: エラー時にSlack通知",
|
||||
"trigger": "トリガー",
|
||||
"triggerEvent": "トリガーイベント",
|
||||
"onError": "エラー発生時",
|
||||
"onComplete": "タスク完了時",
|
||||
"onStart": "タスク開始時",
|
||||
"onSchedule": "スケジュール実行",
|
||||
"action": "アクション",
|
||||
"actionNotify": "通知送信",
|
||||
"actionRun": "コマンド実行",
|
||||
"actionWebhook": "Webhook 呼出",
|
||||
"targetChannel": "対象チャンネル",
|
||||
"condition": "条件(任意)",
|
||||
"conditionPlaceholder": "例: error.code === 500",
|
||||
"ruleEnabled": "ルール有効化",
|
||||
"ruleDisabled": "ルール無効化",
|
||||
"noAgentBound": "Agent 未バインド",
|
||||
"bindAgent": "Agent をバインド",
|
||||
"unbindAgent": "バインド解除",
|
||||
"boundTo": "{agent} にバインド済み",
|
||||
"bindSuccess": "バインド成功",
|
||||
"bindFailed": "バインド失敗",
|
||||
"selectAgent": "Agent を選択",
|
||||
"pairingTitle": "ペアリング承認",
|
||||
"pairingDesc": "チャンネルからのペアリングリクエストを管理",
|
||||
"noPairingRequests": "保留中のリクエストなし",
|
||||
"pairingCode": "ペアリングコード",
|
||||
"approve": "承認",
|
||||
"reject": "拒否",
|
||||
"approved": "承認済み",
|
||||
"rejected": "拒否済み",
|
||||
"approveFailed": "承認失敗"
|
||||
}
|
||||
65
scripts/translations/ja/cron.json
Normal file
65
scripts/translations/ja/cron.json
Normal file
@@ -0,0 +1,65 @@
|
||||
{
|
||||
"title": "スケジュールタスク",
|
||||
"desc": "OpenClaw の定期タスクを管理",
|
||||
"addTask": "+ タスク追加",
|
||||
"noTasks": "タスクなし",
|
||||
"taskName": "タスク名",
|
||||
"schedule": "スケジュール",
|
||||
"lastRun": "最終実行",
|
||||
"nextRun": "次回実行",
|
||||
"status": "ステータス",
|
||||
"active": "アクティブ",
|
||||
"inactive": "非アクティブ",
|
||||
"actions": "操作",
|
||||
"edit": "編集",
|
||||
"delete": "削除",
|
||||
"enable": "有効化",
|
||||
"disable": "無効化",
|
||||
"runNow": "今すぐ実行",
|
||||
"running": "実行中...",
|
||||
"addTitle": "タスク追加",
|
||||
"editTitle": "タスク編集",
|
||||
"namePlaceholder": "例: 毎日のレポート",
|
||||
"cronExpression": "Cron 式",
|
||||
"cronPlaceholder": "例: 0 9 * * *(毎日9時)",
|
||||
"cronHelp": "Cron 式のヘルプ",
|
||||
"command": "コマンド",
|
||||
"commandPlaceholder": "実行するコマンドまたはメッセージ",
|
||||
"targetAgent": "対象 Agent",
|
||||
"allAgents": "すべての Agent",
|
||||
"nameRequired": "タスク名を入力してください",
|
||||
"cronRequired": "Cron 式を入力してください",
|
||||
"commandRequired": "コマンドを入力してください",
|
||||
"created": "タスク作成済み",
|
||||
"createFailed": "タスク作成失敗",
|
||||
"updated": "タスク更新済み",
|
||||
"updateFailed": "タスク更新失敗",
|
||||
"confirmDelete": "タスク「{name}」を削除しますか?",
|
||||
"deleted": "タスク削除済み",
|
||||
"deleteFailed": "タスク削除失敗",
|
||||
"enabled": "タスク有効化済み",
|
||||
"disabled": "タスク無効化済み",
|
||||
"toggleFailed": "状態切替失敗",
|
||||
"runSent": "実行コマンド送信済み",
|
||||
"runFailed": "実行失敗",
|
||||
"loadFailed": "タスクの読み込みに失敗",
|
||||
"cronPreview": "次回の {count} 回の実行",
|
||||
"everyMinute": "毎分",
|
||||
"everyHour": "毎時",
|
||||
"everyDay": "毎日",
|
||||
"everyWeek": "毎週",
|
||||
"everyMonth": "毎月",
|
||||
"custom": "カスタム",
|
||||
"quickSchedule": "クイックスケジュール",
|
||||
"timezone": "タイムゾーン",
|
||||
"description": "説明",
|
||||
"descPlaceholder": "タスクの説明(任意)",
|
||||
"maxRetries": "最大リトライ回数",
|
||||
"timeout": "タイムアウト(秒)",
|
||||
"history": "実行履歴",
|
||||
"noHistory": "実行履歴なし",
|
||||
"success": "成功",
|
||||
"failed": "失敗",
|
||||
"duration": "所要時間",
|
||||
"output": "出力"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user