feat: i18n 11 languages + website update + fix #139 #140 #141

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:
晴天
2026-03-24 22:31:11 +08:00
parent f8af3bea4a
commit 985d263dc6
261 changed files with 26760 additions and 175 deletions

View File

@@ -0,0 +1,115 @@
import { _ } from '../helper.js'
export default {
title: _('关于', 'About', '關於', 'について', '정보', 'Giới thiệu', 'Acerca de', 'Sobre', 'О программе', 'À propos', 'Über'),
desc: _('ClawPanel 版本和项目信息', 'ClawPanel version and project info', 'ClawPanel 版本和項目資訊', 'ClawPanel バージョンとプロジェクト情報', 'ClawPanel 버전 및 프로젝트 정보', 'Thông tin phiên bản và dự án ClawPanel', 'Información de versión y proyecto de ClawPanel', 'Informações de versão e projeto do ClawPanel', 'Информация о версии и проекте ClawPanel', 'Informations de version et de projet ClawPanel', 'ClawPanel-Version und Projektinformationen'),
subtitle: _('OpenClaw 可视化管理面板', 'OpenClaw Visual Management Panel', '', 'OpenClaw ビジュアル管理パネル', 'OpenClaw 비주얼 관리 패널', 'Bảng quản lý trực quan OpenClaw', 'Panel de gestión visual de OpenClaw', 'Painel de gestão visual do OpenClaw', 'Панель визуального управления OpenClaw', 'Panneau de gestion visuelle OpenClaw', 'OpenClaw Visuelles Verwaltungspanel'),
sectionCommunity: _('社群交流', 'Community', '', 'コミュニティ', '커뮤니티', 'Cộng đồng', 'Comunidad', 'Comunidade', 'Сообщество', 'Communauté'),
sectionProjects: _('相关项目', 'Related Projects', '相關項目', '関連プロジェクト', '관련 프로젝트'),
sectionContribute: _('参与贡献', 'Contribute', '參與貢獻', 'コントリビュート', '기여하기', 'Đóng góp', 'Contribuir', 'Contribuir', 'Вклад', 'Contribuer', 'Mitwirken'),
sectionLinks: _('快捷链接', 'Quick Links', '快捷連結', 'リンク', '링크', 'Liên kết', 'Enlaces', 'Links', 'Ссылки', 'Liens', 'Links'),
sectionAboutUs: _('关于我们', 'About Us', '關於我們', '私たちについて', '소개'),
techStack: _('ClawPanel 基于 Tauri v2 构建,前端 Vanilla JS + Vite后端 Rust。', 'ClawPanel is built with Tauri v2, Vanilla JS + Vite frontend, Rust backend.', 'ClawPanel 基於 Tauri v2 構建,前端 Vanilla JS + Vite後端 Rust。', 'ClawPanel は Tauri v2 で構築、フロントエンド Vanilla JS + Vite、バックエンド Rust。'),
copyright: _('MIT License © 2026 武汉晴辰天下网络科技有限公司', 'MIT License © 2026 Wuhan Qingchen Tianxia Network Technology Co., Ltd.', 'MIT License © 2026 武漢晴辰天下網路科技有限公司'),
checkingUpdate: _('检查更新中...', 'Checking for updates...', '檢查更新中...', '更新を確認中...', '업데이트 확인 중...', 'Đang kiểm tra cập nhật...', 'Verificando actualizaciones...', 'Verificando atualizações...', 'Проверка обновлений...', 'Vérification des mises à jour...', 'Suche nach Updates...'),
official: _('原版', 'Official', '', '公式', '공식', 'Chính thức', 'Oficial', 'Oficial', 'Официальный', 'Officiel', 'Offiziell'),
chinese: _('汉化版', 'Chinese', '漢化版', '中国語版', '중국어판'),
policyAhead: _('检测到你本地安装的是高于推荐稳定版的 {current},可能存在接口、事件或配置兼容性问题。建议回退到 {recommended};如果你要继续使用高版本,请自行验证兼容性并关注 issue / release。', 'Your local installation {current} is ahead of the recommended stable version. There may be API, event, or config compatibility issues. Consider rolling back to {recommended}; if you want to keep the newer version, verify compatibility yourself and watch issues/releases.', '檢測到你本地安裝的是高於推薦穩定版的 {current},可能存在介面、事件或設定相容性問題。建議回退到 {recommended};如果你要繼續使用高版本,請自行驗證相容性並關注 issue / release。'),
policyDefault: _('当前面板默认只保证推荐稳定版的兼容性;如果你要尝试其他版本或预览版,请自行验证兼容性。若希望面板尽快支持最新版特性,欢迎提交 issue 告诉我们。', 'This panel only guarantees compatibility with the recommended stable version. If you want to try other versions or previews, verify compatibility yourself. Submit an issue if you want us to support the latest version sooner.', '目前面板預設只保證推薦穩定版的相容性;如果你要尝試其他版本或預覽版,請自行驗證相容性。若希望面板尽快支援最新版特性,欢迎提交 issue 告诉我們。'),
notInstalled: _('未安装', 'Not installed', '未安裝', '未インストール', '미설치', 'Chưa cài đặt', 'No instalado', 'Não instalado', 'Не установлен', 'Non installé', 'Nicht installiert'),
aheadOfRecommended: _('当前版本高于推荐稳定版: {ver}', 'Current version is ahead of recommended stable: {ver}', '目前版本高於推薦穩定版: {ver}'),
rollbackToRecommended: _('回退到推荐版', 'Rollback to recommended', '回退到推薦版'),
recommendedStable: _('推荐稳定版: {ver}', 'Recommended stable: {ver}', '推薦穩定版: {ver}', '推奨安定版: {ver}', '권장 안정 버전: {ver}'),
switchToRecommended: _('切换到推荐版', 'Switch to recommended', '切換到推薦版'),
isRecommended: _('已是推荐稳定版', 'Already on recommended stable', '已是推薦穩定版'),
latestUpstream: _('最新上游: {ver}', 'Latest upstream: {ver}'),
switchVersion: _('切换版本', 'Switch Version', '切換版本', 'バージョン切替', '버전 전환'),
installOpenclaw: _('安装 OpenClaw', 'Install OpenClaw', '安裝 OpenClaw', 'OpenClaw をインストール', 'OpenClaw 설치'),
uninstall: _('卸载', 'Uninstall', '卸載', 'アンインストール', '제거'),
installPath: _('安装路径', 'Install Path', '安裝路徑', 'インストールパス', '설치 경로'),
configExists: _('配置文件存在', 'Config file exists', '設定檔案存在', '設定ファイルあり', '설정 파일 있음'),
configNotFound: _('未找到配置文件', 'Config file not found', '未找到設定檔案', '設定ファイルが見つかりません', '설정 파일을 찾을 수 없음'),
rollbackToRecommendedStable: _('回退到推荐稳定版', 'Rollback to recommended stable', '回退到推薦穩定版'),
switchToRecommendedStable: _('切换到推荐稳定版', 'Switch to recommended stable', '切換到推薦穩定版'),
confirmUninstall: _('确定要卸载 OpenClaw 吗?\n\n这将停止 Gateway 服务并卸载 npm 全局包。\n配置文件~/.openclaw/)默认保留,可稍后手动删除。', 'Are you sure you want to uninstall OpenClaw?\n\nThis will stop the Gateway service and uninstall the npm global package.\nConfig files (~/.openclaw/) are kept by default and can be deleted manually later.', '確定要卸載 OpenClaw 吗?\n\n这將停止 Gateway 服務並卸載 npm 全域包。\n設定檔案~/.openclaw/)預設保留,可稍后手動刪除。'),
uninstallTitle: _('卸载 OpenClaw', 'Uninstall OpenClaw', '卸載 OpenClaw'),
uninstallStarting: _('开始卸载 OpenClaw...', 'Starting OpenClaw uninstall...', '開始卸載 OpenClaw...'),
uninstallDone: _('卸载完成', 'Uninstall complete', '卸載完成'),
uninstallFailed: _('卸载失败: ', 'Uninstall failed: ', '卸載失敗: '),
uninstallTaskStarted: _('后台卸载任务已启动...', 'Background uninstall task started...', '後台卸載任務已啟動...'),
versionLabel: _('版本', 'Version', '', 'バージョン', '버전', 'Phiên bản', 'Versión', 'Versão', 'Версия'),
selectVersion: _('选择版本号', 'Select Version', '選擇版本號', 'バージョンを選択', '버전 선택'),
versionPickerHint: _('默认建议使用当前面板绑定的推荐稳定版。若手动切换到其它版本,尤其是预览版/最新版,请自行验证兼容性;如果你希望面板优先适配最新版功能,欢迎提交 issue。', 'Recommended to use the stable version bound to this panel. Switching to other versions (especially preview/latest) requires manual compatibility verification. Submit an issue if you want latest version support.', '預設建議使用目前面板綁定的推薦穩定版。若手動切換到其它版本,尤其是預覽版/最新版,請自行驗證相容性;如果你希望面板優先適配最新版功能,欢迎提交 issue。'),
btnSwitch: _('切换', 'Switch', '切換', '切替'),
btnInstall: _('安装', 'Install', '安裝', 'インストール'),
tagRecommended: _('(推荐稳定版)', ' (Recommended Stable)', '(推薦穩定版)', '(推奨安定版)', '(권장 안정판)'),
tagNeedTest: _('(需自测兼容性)', ' (Verify compatibility)', '(需自測相容性)', '(互換性要テスト)'),
hintInstall: _('将安装 {source} {ver}{tag}', 'Will install {source} {ver}{tag}', '將安裝 {source} {ver}{tag}'),
hintCurrent: _('当前', 'Current', '目前'),
hintAlreadyVersion: _('当前已是 {ver}{tag}', 'Already on {ver}{tag}', '目前已是 {ver}{tag}'),
btnReinstall: _('重新安装', 'Reinstall', '重新安裝'),
btnUpgrade: _('升级', 'Upgrade', '升級'),
btnDowngrade: _('降级', 'Downgrade', '降級'),
noVersions: _('未找到可用版本', 'No versions found', '', '利用可能なバージョンが見つかりません', '사용 가능한 버전 없음'),
recommended: _('推荐', 'Recommended', '推薦', '推奨', '권장', 'Khuyến nghị', 'Recomendado', 'Recomendado', 'Рекомендуемый', 'Recommandé', 'Empfohlen'),
current: _('当前', 'Current', '目前', '現在', '현재', 'Hiện tại', 'Actual', 'Atual', 'Текущий', 'Actuel', 'Aktuell'),
hidePreview: _('隐藏预览版 ({count})', 'Hide preview ({count})', '隱藏預覽版 ({count})'),
showPreview: _('显示预览版 ({count})', 'Show preview ({count})', '顯示預覽版 ({count})'),
operationDone: _('操作完成', 'Operation complete', '', '操作完了', '작업 완료'),
taskStarted: _('后台任务已启动,请等待完成...', 'Background task started, please wait...', '後台任務已啟動,請等待完成...'),
webModeNoLog: _('Web 模式:安装过程日志不可用,请等待完成...', 'Web mode: Install logs unavailable, please wait...', 'Web 模式:安裝過程日誌不可用,請等待完成...'),
updateReady: _('已就绪', 'ready', '已就緒', '準備完了'),
reloadApp: _('重载应用', 'Reload App', '重載應用', 'アプリを再読み込み', '앱 새로고침'),
rollback: _('回退', 'Rollback', '', 'ロールバック'),
rollbackSuccess: _('已回退到内嵌版本,重载中...', 'Rolled back to embedded version, reloading...', '已回退到內嵌版本,重載中...'),
rollbackFailed: _('回退失败: ', 'Rollback failed: ', '回退失敗: '),
newVersion: _('新版本', 'New version', '', '新バージョン', '새 버전'),
hotUpdate: _('热更新', 'Hot Update', '熱更新', 'ホットアップデート', '핫 업데이트'),
fullInstaller: _('完整安装包', 'Full Installer', '完整安裝包', 'フルインストーラー'),
downloading: _('下载中...', 'Downloading...', '下載中...', 'ダウンロード中...', '다운로드 중...'),
downloadDone: _('更新下载完成,点击「重载应用」生效', 'Update downloaded, click "Reload App" to apply', '更新下載完成,点擊「重載應用」生效', '更新ダウンロード完了、「アプリを再読み込み」をクリックして適用'),
downloadFailed: _('下载失败: ', 'Download failed: ', '下載失敗: ', 'ダウンロード失敗: ', '다운로드 실패: '),
retry: _('重试', 'Retry', '重試', '再試行', '재시도'),
needFullUpdate: _('需要更新完整安装包', 'Full install package update required', '需要更新完整安裝包'),
goToWebsite: _('前往官网下载', 'Go to Website', '前往官網下載'),
upToDate: _('已是最新', 'Up to date', '', '最新です', '최신 상태', 'Đã cập nhật', 'Actualizado', 'Atualizado', 'Актуально', 'À jour', 'Aktuell'),
checkUpdateFailed: _('暂无法检查更新', 'Unable to check for updates', '暫無法檢查更新', '更新を確認できません', '업데이트 확인 실패', 'Kiểm tra cập nhật thất bại', 'Error al verificar actualizaciones', 'Falha ao verificar atualizações', 'Ошибка проверки обновлений', 'Échec de la vérification des mises à jour', 'Update-Prüfung fehlgeschlagen'),
qqGroup: _('QQ 交流群', 'QQ Group'),
wechatGroup: _('微信交流群', 'WeChat Group'),
douyinGroup: _('抖音交流群', 'Douyin Group'),
feishuGroup: _('飞书交流群', 'Feishu Group', '飛書交流群'),
communityDesc: _('扫码或点击链接加入交流群,反馈问题、获取帮助', 'Scan QR code or click link to join, report issues and get help', '掃碼或点擊連結加入交流群,反馈問題、取得幫助', 'QR コードをスキャンまたはリンクをクリックしてコミュニティに参加'),
joinQQ: _('加入 QQ 群', 'Join QQ Group'),
joinWechat: _('加入微信群', 'Join WeChat Group'),
joinDouyin: _('加入抖音群', 'Join Douyin Group'),
joinFeishu: _('加入飞书群', 'Join Feishu Group', '加入飛書群'),
joinYuanbao: _('元宝派社群', 'Yuanbao Community', '元寶派社群'),
joinDiscord: _('加入 Discord', 'Join Discord', '', 'Discord に参加', 'Discord 참여', 'Tham gia Discord', 'Unirse a Discord', 'Entrar no Discord', 'Присоединиться к Discord', 'Rejoindre Discord', 'Discord beitreten'),
discordDesc: _('国际社区', 'International Community', '國際社群', '国際コミュニティ', '국제 커뮤니티', 'Cộng đồng quốc tế', 'Comunidad internacional', 'Comunidade internacional', 'Международное сообщество', 'Communauté internationale', 'Internationale Community'),
communityWelcome: _('欢迎加入 OpenClaw 社区!遇到问题随时反馈,一起让 AI Agent 更好用。', 'Welcome to the OpenClaw community! Report issues anytime, let\'s make AI Agents better together.', '歡迎加入 OpenClaw 社群!遇到問題隨時反饋,一起讓 AI Agent 更好用。', 'OpenClaw コミュニティへようこそ!問題があればいつでもフィードバックしてください。一緒に AI Agent をより使いやすくしましょう。', 'OpenClaw 커뮤니티에 오신 것을 환영합니다! 문제가 있으면 언제든 피드백해 주세요. 함께 AI Agent를 더 좋게 만들어요.', 'Chào mừng bạn đến với cộng đồng OpenClaw! Hãy phản hồi bất cứ lúc nào, cùng nhau làm cho AI Agent tốt hơn.', '¡Bienvenido a la comunidad OpenClaw! Reporta problemas en cualquier momento, hagamos juntos que los AI Agents sean mejores.', 'Bem-vindo à comunidade OpenClaw! Reporte problemas a qualquer momento, vamos juntos tornar os AI Agents melhores.', 'Добро пожаловать в сообщество OpenClaw! Сообщайте о проблемах в любое время, давайте вместе сделаем AI-агентов лучше.', 'Bienvenue dans la communauté OpenClaw ! Signalez les problèmes à tout moment, construisons ensemble de meilleurs agents IA.', '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.', 'Welcome to the OpenClaw community! Share ideas, get help, and build amazing AI agents together.'),
communityNote: _('2000 人大群,满员自动切换 · 碰到问题可直接在群内反馈', '2000+ members, auto-switch when full · Report issues directly in group', '2000 人大群,滿員自動切換 · 碰到問題可直接在群內反馈'),
projectOpenClaw: _('AI Agent 框架,支持多模型协作、工具调用、记忆管理', 'AI Agent framework with multi-model collaboration, tool calling, memory management', 'AI Agent 框架,支援多模型协作、工具呼叫、記憶管理'),
projectOpenClawZh: _('我们维护的 OpenClaw 汉化版3000+ Star中文界面 + 国内镜像优化', 'Our maintained Chinese translation of OpenClaw, 3000+ Stars, Chinese UI + domestic mirror optimization', '我們维护的 OpenClaw 漢化版3000+ Star中文界面 + 國內鏡像最佳化'),
projectClawPanel: _('OpenClaw 可视化管理面板Tauri v2 桌面应用', 'OpenClaw visual management panel, Tauri v2 desktop app', 'OpenClaw 可视化管理面板Tauri v2 桌面應用'),
projectClawApp: _('跨平台移动聊天客户端H5 + 代理服务器架构,支持离线和流式传输', 'Cross-platform mobile chat client, H5 + proxy server architecture, offline and streaming support', '跨平台移動聊天用戶端H5 + 代理伺服器架構,支援離線和流式傳輸'),
projectCftunnel: _('全协议内网穿透工具Cloud 模式免费 HTTP/WS + Relay 模式自建中继', 'Full-protocol tunnel tool, Cloud mode free HTTP/WS + Relay mode self-hosted', '全协議內網穿透工具Cloud 模式免費 HTTP/WS + Relay 模式自建中繼'),
domesticMirror: _('国内镜像', 'China Mirror', '國內鏡像'),
linkWebsite: _('Claw 项目官网', 'Claw Project Website', 'Claw 項目官網'),
linkOpenClawZh: _('OpenClaw 中文翻译', 'OpenClaw Chinese Translation'),
linkClawApp: _('ClawApp 手机客户端', 'ClawApp Mobile Client', 'ClawApp 手機用戶端'),
linkCftunnel: _('cftunnel 内网穿透', 'cftunnel Tunnel Tool', 'cftunnel 內網穿透'),
contributeDesc: _('ClawPanel 是开源项目,欢迎参与贡献!遇到问题请提 Issue功能建议和代码改进欢迎提 PR。', 'ClawPanel is open source! Report bugs via Issues, submit feature requests and code improvements via PRs.', 'ClawPanel 是開源項目,欢迎參與貢獻!遇到問題請提 Issue功能建議和代碼改進欢迎提 PR。', 'ClawPanel はオープンソースプロジェクトです。Issue や PR を歓迎します!', 'ClawPanel은 오픈소스 프로젝트입니다. Issue와 PR을 환영합니다!'),
submitIssue: _('提交 Issue', 'Submit Issue', '', 'Issue を提出', 'Issue 제출', 'Gửi Issue', 'Enviar Issue', 'Enviar Issue', 'Создать Issue', 'Soumettre un Issue', 'Issue einreichen'),
submitPR: _('提交 PR', 'Submit PR', '', 'PR を提出', 'PR 제출', 'Gửi PR', 'Enviar PR', 'Enviar PR', 'Создать PR', 'Soumettre un PR', 'PR einreichen'),
contributeGuide: _('贡献指南', 'Contributing Guide', '貢獻指南', 'コントリビュートガイド', '기여 가이드'),
viewIssues: _('查看 Issues', 'View Issues', '', 'Issues を見る'),
domesticMirrorHint: _('国内镜像:<a href="https://gitee.com/QtCodeCreators/clawpanel" target="_blank" rel="noopener" style="color:var(--accent)">Gitee</a>(无法访问 GitHub 时可用)', 'China mirror: <a href="https://gitee.com/QtCodeCreators/clawpanel" target="_blank" rel="noopener" style="color:var(--accent)">Gitee</a> (use when GitHub is inaccessible)', '國內鏡像:<a href="https://gitee.com/QtCodeCreators/clawpanel" target="_blank" rel="noopener" style="color:var(--accent)">Gitee</a>(無法訪問 GitHub 時可用)'),
companyName: _('武汉晴辰天下网络科技有限公司', 'Wuhan Qingchen Tianxia Network Technology Co., Ltd.', '武漢晴辰天下網路科技有限公司'),
officialWebsite: _('官方网站', 'Official Website', '官方網站', '公式サイト', '공식 사이트', 'Trang web chính thức', 'Sitio web oficial', 'Site oficial', 'Официальный сайт', 'Site officiel', 'Offizielle Website'),
productWebsite: _('产品官网', 'Product Website', '產品官網', '製品サイト'),
openSourceRepo: _('开源仓库', 'Open Source Repo', '開源倉庫', 'オープンソースリポジトリ', '오픈소스 저장소', 'Kho mã nguồn mở', 'Repositorio de código abierto', 'Repositório de código aberto', 'Открытый репозиторий', 'Dépôt open source', 'Open-Source-Repository'),
businessCoop: _('商务合作', 'Business Contact', '商務合作', 'ビジネス連携'),
contactViaWebsite: _('请通过官网联系我们', 'Please contact us via our website', '請通過官網聯系我們', '公式サイトからお問い合わせください'),
companyDesc: _('我们是 OpenClaw 汉化版3000+ Star和 ClawPanel 的作者团队。日常做 AI Agent 相关的产品和开源工具,也接企业私有化部署、定制开发之类的活儿。有事直接群里找我们就行。', 'We are the team behind OpenClaw Chinese Translation (3000+ Stars) and ClawPanel. We build AI Agent products and open source tools, and offer enterprise deployment and custom development services.', '我們是 OpenClaw 漢化版3000+ Star和 ClawPanel 的作者團队。日常做 AI Agent 相關的產品和開源工具,也接企業私有化部署、定制開發之類的活儿。有事直接群里找我們就行。'),
}

View File

@@ -0,0 +1,47 @@
import { _ } from '../helper.js'
export default {
title: _('Agent 管理', 'Agents', '', 'Agent 管理', 'Agent 관리', 'Quản lý Agent', 'Gestión de Agentes', 'Gestão de Agentes', 'Управление агентами', 'Gestion des Agents', 'Agenten-Verwaltung'),
desc: _('创建和管理 OpenClaw Agent配置身份、模型和工作区', 'Create and manage OpenClaw Agents, configure identity, model and workspace', '建立和管理 OpenClaw Agent設定身份、模型和工作區', 'OpenClaw Agent の作成と管理、ID・モデル・ワークスペースの設定', 'OpenClaw Agent 생성 및 관리, ID·모델·워크스페이스 설정', 'Tạo và quản lý OpenClaw Agent', 'Crear y gestionar OpenClaw Agents', 'Criar e gerenciar OpenClaw Agents', 'Создание и управление агентами OpenClaw', 'Créer et gérer les Agents OpenClaw', 'OpenClaw-Agenten erstellen und verwalten'),
addAgent: _('+ 新建 Agent', '+ New Agent', '', '+ 新規 Agent', '+ 새 Agent', '+ Agent mới', '+ Nuevo Agent', '+ Novo Agent', '+ Новый агент', '+ Nouvel Agent', '+ Neuer Agent'),
noAgents: _('暂无 Agent', 'No agents', '暫無 Agent', 'Agent なし', 'Agent 없음', 'Không có Agent', 'Sin Agentes', 'Sem Agentes', 'Нет агентов', 'Aucun Agent', 'Keine Agenten'),
loadFailed: _('加载失败', 'Load failed', '載入失敗', '読み込み失敗', '로드 실패', 'Tải thất bại', 'Error al cargar', 'Falha ao carregar', 'Ошибка загрузки', 'Échec du chargement', 'Laden fehlgeschlagen'),
loadListFailed: _('加载 Agent 列表失败', 'Failed to load agent list', '載入 Agent 列表失敗', 'Agent リストの読み込みに失敗', 'Agent 목록 로드 실패'),
noDesc: _('无描述', 'No description', '無描述', '説明なし', '설명 없음'),
default: _('默认', 'Default', '預設', 'デフォルト', '기본', 'Mặc định', 'Predeterminado', 'Padrão', 'По умолчанию', 'Par défaut', 'Standard'),
backup: _('备份', 'Backup', '備份', 'バックアップ', '백업', 'Sao lưu', 'Respaldo', '', 'Резервная копия', 'Sauvegarde'),
edit: _('编辑', 'Edit', '編輯', '編集', '편집', 'Sửa', 'Editar', 'Editar', 'Редактировать', 'Modifier', 'Bearbeiten'),
delete: _('删除', 'Delete', '刪除', '削除', '삭제', 'Xóa', 'Eliminar', 'Excluir', 'Удалить', 'Supprimer', 'Löschen'),
labelName: _('名称:', 'Name:', '名稱:', '名前:', '이름:'),
labelModel: _('模型:', 'Model:', '', 'モデル:', '모델:'),
labelWorkspace: _('工作区:', 'Workspace:', '工作區:', 'ワークスペース:', '워크스페이스:'),
labelBindings: _('绑定渠道:', 'Bindings:', '綁定頻道:', 'バインドチャンネル:', '바인딩 채널:'),
notSet: _('未设置', 'Not set', '未設定', '未設定', '미설정', 'Chưa đặt', 'No configurado', 'Não definido', 'Не задано', 'Non défini', 'Nicht gesetzt'),
noBinding: _('未绑定渠道', 'No channel bound', '未綁定頻道', 'チャンネル未バインド', '채널 미바인딩'),
addModelsFirst: _('请先在模型配置页面添加模型', 'Please add models in the Models page first', '請先在模型設定頁面新增模型', '先にモデル設定ページでモデルを追加してください', '먼저 모델 설정 페이지에서 모델을 추가하세요'),
addTitle: _('新建 Agent', 'New Agent', '', '新規 Agent', '새 Agent', 'Agent mới', 'Nuevo Agent', 'Novo Agent', 'Новый агент', 'Nouvel Agent', 'Neuer Agent'),
agentId: _('Agent ID', 'Agent ID', '', '', '', '', '', '', 'ID агента', 'ID Agent', 'Agent-ID'),
agentIdPlaceholder: _('例如translator小写字母、数字、下划线、连字符', 'e.g. translator (lowercase, digits, underscore, hyphen)', '例如translator小写字母、數字、下劃線、連字符', '例: translator小文字、数字、アンダースコア、ハイフン', '예: translator (소문자, 숫자, 밑줄, 하이픈)'),
agentName: _('名称', 'Name', '名稱', '名前', '이름', 'Tên', 'Nombre', 'Nome', 'Имя', 'Nom'),
agentNamePlaceholder: _('例如:翻译助手', 'e.g. Translation Assistant', '', '例: 翻訳アシスタント', '예: 번역 도우미'),
agentEmoji: _('Emoji', 'Emoji'),
agentEmojiPlaceholder: _('例如:🌐(可选)', 'e.g. 🌐 (optional)', '例如:🌐(可選)', '例: 🌐(任意)', '예: 🌐 (선택)'),
agentModel: _('模型', 'Model', '', 'モデル', '모델', 'Mô hình', 'Modelo', 'Modelo', 'Модель', 'Modèle', 'Modell'),
agentWorkspace: _('工作区路径', 'Workspace Path', '工作區路徑', 'ワークスペースパス', '워크스페이스 경로'),
agentWorkspacePlaceholder: _('留空则自动创建(可选,绝对路径)', 'Leave empty to auto-create (optional, absolute path)', '留空則自動建立(可選,绝对路徑)', '空欄で自動作成(任意、絶対パス)', '비워두면 자동 생성 (선택, 절대 경로)'),
idRequired: _('请输入 Agent ID', 'Please enter an Agent ID', '請輸入 Agent ID', 'Agent ID を入力してください', 'Agent ID를 입력하세요'),
idInvalid: _('Agent ID 只能包含小写字母、数字、下划线和连字符', 'Agent ID can only contain lowercase letters, digits, underscores and hyphens', 'Agent ID 只能包含小写字母、數字、下劃線和連字符', 'Agent ID は小文字、数字、アンダースコア、ハイフンのみ使用可能です', 'Agent ID는 소문자, 숫자, 밑줄, 하이픈만 사용 가능합니다'),
created: _('Agent 已创建', 'Agent created', 'Agent 已建立', 'Agent 作成済み', 'Agent 생성됨', 'Agent đã tạo', 'Agent creado', 'Agent criado', 'Агент создан', 'Agent créé', 'Agent erstellt'),
createdNameFailed: _('Agent 已创建,但名称设置失败,可稍后编辑', 'Agent created, but name setting failed. You can edit it later.', 'Agent 已建立,但名稱設定失敗,可稍后編輯', 'Agent は作成されましたが名前の設定に失敗しました。後で編集できます。'),
createFailed: _('创建失败', 'Creation failed', '建立失敗', '作成失敗', '생성 실패', 'Tạo thất bại', 'Error al crear', 'Falha ao criar', 'Ошибка создания', 'Échec de la création', 'Erstellen fehlgeschlagen'),
editTitle: _('编辑 Agent — {id}', 'Edit Agent — {id}', '編輯 Agent — {id}', 'Agent 編集 — {id}', 'Agent 편집 — {id}', 'Sửa Agent — {id}', 'Editar Agent — {id}', 'Editar Agent — {id}', 'Редактировать агента — {id}', 'Modifier l\'Agent — {id}', 'Agent bearbeiten — {id}'),
workspaceReadonly: _('创建时指定,不可修改', 'Set at creation, cannot be changed', '建立時指定,不可修改', '作成時に設定、変更不可', '생성 시 설정, 변경 불가'),
updated: _('已更新', 'Updated', '', '更新済み', '업데이트됨', 'Đã cập nhật', 'Actualizado', 'Atualizado', 'Обновлено', 'Mis à jour', 'Aktualisiert'),
updateFailed: _('更新失败', 'Update failed', '更新失敗', '更新失敗', '업데이트 실패', 'Cập nhật thất bại', 'Error al actualizar', 'Falha ao atualizar', 'Ошибка обновления', 'Échec de la mise à jour', 'Aktualisierung fehlgeschlagen'),
confirmDelete: _('确定删除 Agent「{id}」?\n\n此操作将删除该 Agent 的所有数据和会话。', 'Delete Agent "{id}"?\n\nThis will delete all data and conversations for this agent.', '確定刪除 Agent「{id}」?\n\n此操作將刪除該 Agent 的所有資料和對話。', 'Agent「{id}」を削除しますか?\\n\\nこの Agent のすべてのデータと会話が削除されます。', 'Agent「{id}」를 삭제하시겠습니까?\\n\\n이 Agent의 모든 데이터와 대화가 삭제됩니다.'),
deleted: _('已删除', 'Deleted', '已刪除', '削除済み', '삭제됨', 'Đã xóa', 'Eliminado', 'Excluído', 'Удалён', 'Supprimé', 'Gelöscht'),
deleteFailed: _('删除失败', 'Delete failed', '刪除失敗', '削除失敗', '삭제 실패', 'Xóa thất bại', 'Error al eliminar', 'Falha ao excluir', 'Ошибка удаления', 'Échec de la suppression', 'Löschen fehlgeschlagen'),
backingUp: _('正在备份 Agent「{id}」...', 'Backing up Agent "{id}"...', '正在備份 Agent「{id}」...', 'Agent「{id}」をバックアップ中...', 'Agent「{id}」 백업 중...'),
backupDone: _('备份完成: {file}', 'Backup done: {file}', '備份完成: {file}', 'バックアップ完了: {file}', '백업 완료: {file}'),
backupFailed: _('备份失败', 'Backup failed', '備份失敗', 'バックアップ失敗', '백업 실패'),
}

View File

@@ -0,0 +1,259 @@
import { _ } from '../helper.js'
export default {
modeChat: _('聊天', 'Chat', '', 'チャット', '채팅'),
modeChatDesc: _('纯对话,不使用工具', 'Pure conversation, no tools', '純對話,不使用工具', '会話のみ、ツール不使用', '대화만, 도구 미사용'),
modePlan: _('规划', 'Plan', '規劃', 'プランニング', '플래닝'),
modePlanDesc: _('AI 只读分析,工具仅查看', 'AI read-only analysis, tools view-only', 'AI 唯讀分析,工具僅查看', 'AI 読み取り専用分析、ツールは閲覧のみ', 'AI 읽기 전용 분석, 도구는 조회만'),
modeExecute: _('执行', 'Execute', '執行', '実行', '실행'),
modeExecuteDesc: _('允许执行命令和修改文件', 'Allow running commands and modifying files', '允許執行命令和修改檔案', 'コマンド実行とファイル変更を許可', '명령 실행 및 파일 변경 허용'),
modeUnlimited: _('无限', 'Unlimited', '無限', '無制限', '무제한'),
modeUnlimitedDesc: _('跳过危险确认,全自动执行', 'Skip danger confirmations, fully automated', '略過危險確認,全自動執行', '危険確認をスキップ、全自動実行', '위험 확인 건너뛰기, 완전 자동 실행'),
apiHintOpenai: _('兼容 OpenAI 接口大多数中转站、Ollama 等)', 'OpenAI compatible API (most proxies, Ollama, etc.)', '相容 OpenAI 介面大多數中轉站、Ollama 等)'),
apiHintAnthropic: _('Anthropic Claude 原生接口', 'Anthropic Claude native API', 'Anthropic Claude 原生介面'),
apiHintGemini: _('Google Gemini 原生接口', 'Google Gemini native API', 'Google Gemini 原生介面'),
apiBasePlaceholderOpenai: _('https://api.openai.com/v1 或中转站地址', 'https://api.openai.com/v1 or proxy URL', 'https://api.openai.com/v1 或中轉站位址'),
apiKeyPlaceholderOpenai: _('sk-... 或中转站密钥', 'sk-... or proxy key', 'sk-... 或中轉站金鑰'),
defaultName: _('晴辰助手', 'Assistant', '', 'AI アシスタント', 'AI 어시스턴트', 'Trợ lý AI', 'Asistente IA', 'Assistente IA', 'ИИ-ассистент', 'Assistant IA', 'KI-Assistent'),
defaultPersonality: _('专业、友好、乐于助人', 'Professional, friendly, and helpful', '專業、友好、樂於助人', 'プロフェッショナル、フレンドリー、親切'),
skillCheckConfig: _('检查配置', 'Check Config', '檢查設定'),
skillCheckConfigDesc: _('检查 OpenClaw 配置文件是否正确', 'Check if OpenClaw config files are correct', '檢查 OpenClaw 設定檔案是否正確'),
skillDiagnoseGateway: _('诊断 Gateway', 'Diagnose Gateway', '诊斷 Gateway'),
skillDiagnoseGatewayDesc: _('诊断 Gateway 运行状态', 'Diagnose Gateway running status', '诊斷 Gateway 執行狀態'),
skillBrowseDir: _('浏览目录', 'Browse Directory', '瀏覽目錄'),
skillBrowseDirDesc: _('浏览 OpenClaw 配置目录结构', 'Browse OpenClaw config directory structure', '瀏覽 OpenClaw 設定目錄結構'),
skillCheckEnv: _('检查环境', 'Check Environment', '檢查環境'),
skillCheckEnvDesc: _('检查系统环境是否满足要求', 'Check if system meets requirements', '檢查系統環境是否滿足要求'),
skillAnalyzeLogs: _('分析日志', 'Analyze Logs', '分析日誌'),
skillAnalyzeLogsDesc: _('分析最近的日志,找出问题', 'Analyze recent logs to find issues', '分析最近的日誌,找出問題'),
skillFixCommon: _('一键修复', 'Auto Fix', '一鍵修复'),
skillFixCommonDesc: _('自动检测并修复常见问题', 'Auto-detect and fix common issues', '自動檢測並修复常见問題'),
skillReportBug: _('反馈 Bug', 'Report Bug'),
skillReportBugDesc: _('整理成标准 GitHub Issue', 'Format as a standard GitHub Issue', '整理成標準 GitHub Issue'),
skillPrAssistant: _('PR 助手', 'PR Assistant'),
skillPrAssistantDesc: _('帮你走一遍 PR 流程', 'Walk through the PR process', '幫你走一遍 PR 流程'),
skillSkillsManager: _('Skills 管理', 'Skills Manager'),
skillSkillsManagerDesc: _('管理 OpenClaw 的 Skills', 'Manage OpenClaw Skills'),
soulFileSoul: _('核心人格', 'Core persona'),
soulFileIdentity: _('身份信息', 'Identity info', '身份資訊'),
soulFileUser: _('用户偏好', 'User preferences', '使用者偏好'),
soulFileAgents: _('Agent 信息', 'Agent info', 'Agent 資訊'),
soulFileTools: _('工具描述', 'Tool descriptions'),
soulFileMemory: _('记忆文件', 'Memory files', '記憶檔案'),
soulLoaded: _('已加载 {loaded}/{total} 个文件({size}', 'Loaded {loaded}/{total} files ({size})', '已載入 {loaded}/{total} 個檔案({size}'),
soulMemoryDaily: _('每日记忆', 'Daily memory', '每日記憶'),
soulMemoryCount: _('{count} 条', '{count} entries', '{count} 條'),
sendQueue: _('发送队列', 'Send Queue', '發送佇列'),
clickToEdit: _('点击编辑', 'Click to edit', '点擊編輯'),
edit: _('编辑', 'Edit', '編輯'),
sendNow: _('立即发送', 'Send Now', '立即發送'),
imageTooLarge: _('图片太大,请选择小于 10MB 的图片', 'Image too large, please select one under 10MB', '圖片太大,請選擇小於 10MB 的圖片'),
imageMessage: _('(图片消息)', '(image message)', '(圖片訊息)'),
image: _('图片', 'Image', '圖片'),
newSession: _('新建会话', 'New Session', '新建對話', '新しいセッション', '새 세션', 'Phiên mới', 'Nueva sesión', 'Nova sessão', 'Новая сессия', 'Nouvelle session', 'Neue Sitzung'),
deleteSession: _('删除会话', 'Delete Session', '刪除對話', 'セッション削除', '세션 삭제', 'Xóa phiên', 'Eliminar sesión', 'Excluir sessão', 'Удалить сессию', 'Supprimer la session', 'Sitzung löschen'),
noSessions: _('暂无会话', 'No sessions', '暫無對話', 'セッションなし', '세션 없음', 'Không có phiên', 'Sin sesiones', 'Sem sessões', 'Нет сессий', 'Aucune session', 'Keine Sitzungen'),
confirmDeleteSession: _('确定删除这个会话吗?', 'Delete this session?', '確定刪除这個對話吗?', 'このセッションを削除しますか?', '이 세션을 삭제하시겠습니까?'),
sessionList: _('会话列表', 'Sessions', '對話列表', 'セッションリスト', '세션 목록', 'Danh sách phiên', 'Lista de sesiones', 'Lista de sessões', 'Список сессий', 'Liste des sessions', 'Sitzungsliste'),
errConfigFirst: _('请先在设置中配置 API', 'Please configure the API in Settings first', '請先在設定中設定 API', '先に設定で API を設定してください', '먼저 설정에서 API를 설정하세요'),
errTimeout: _('请求超时', 'Request timed out', '請求逾時', 'リクエストタイムアウト', '요청 타임아웃'),
errStreamTimeout: _('流式响应超时({seconds}s 无数据),连接可能已断开', 'Streaming response timed out ({seconds}s no data), connection may be lost', '流式回應逾時({seconds}s 無資料),連線可能已斷開'),
toolRunCmd: _('执行命令', 'Run command', '執行命令'),
toolReadFile: _('读取文件', 'Read file', '讀取檔案'),
toolWriteFile: _('写入文件', 'Write file', '写入檔案'),
toolListDir: _('列出目录', 'List directory', '列出目錄'),
toolSysInfo: _('系统信息', 'System info', '系統資訊'),
toolCheckPort: _('端口检查', 'Check port', '連接埠檢查'),
toolProcessList: _('进程列表', 'Process list', '處理程序列表'),
toolWebSearch: _('网页搜索', 'Web search', '網頁搜尋'),
toolWebSearchDesc: _('搜索网页获取信息', 'Search the web for information', '搜尋網頁取得資訊'),
toolClawHubSearch: _('搜索 ClawHub', 'Search ClawHub', '搜尋 ClawHub'),
toolClawHubInstall: _('安装 Skill', 'Install Skill', '安裝 Skill'),
toolInstallDep: _('安装依赖', 'Install dependency', '安裝依赖'),
toolFileOps: _('文件操作', 'File Operations', '檔案操作'),
toolFileOpsDesc: _('读写文件和目录', 'Read/write files and directories', '讀写檔案和目錄'),
toolTerminal: _('终端命令', 'Terminal', '終端命令'),
toolTerminalDesc: _('执行系统命令', 'Execute system commands', '執行系統命令'),
toolSkillsList: _('技能列表', 'Skills list'),
toolSkillsCheck: _('技能检查', 'Skills check', '技能檢查'),
toolSkillInfo: _('技能详情', 'Skill details', '技能詳情'),
toolFilterAll: _('全部', 'All', '', 'すべて', '전체'),
toolNoDesc: _('无描述', 'No description', '無描述', '説明なし', '설명 없음'),
toolsAlwaysAvailable: _('始终可用', 'Always available', '始終可用', '常に利用可能'),
toolsHint: _('勾选要启用的工具类别', 'Check the tool categories to enable', '勾選要啟用的工具類別', '有効にするツールカテゴリを選択'),
toolExecuting: _('正在执行...', 'Executing...', '正在執行...', '実行中...', '실행 중...', 'Đang thực thi...', 'Ejecutando...', 'Executando...', 'Выполняется...', 'Exécution...', 'Wird ausgeführt...'),
toolDone: _('执行完成', 'Done', '執行完成', '実行完了', '실행 완료', 'Thực thi hoàn tất', 'Ejecución completada', 'Execução concluída', 'Выполнение завершено', 'Exécution terminée', 'Ausführung abgeschlossen'),
toolDenied: _('用户拒绝执行', 'User denied execution', '使用者拒絕執行', 'ユーザーが実行を拒否', '사용자가 실행 거부'),
toolExecFail: _('执行失败', 'Execution failed', '執行失敗', '実行失敗', '실행 실패'),
toolInstallSuccess: _('安装成功', 'Installed successfully', '安裝成功'),
toolInstallFail: _('安装失败', 'Installation failed', '安裝失敗'),
toolNoSkillFound: _('未找到该技能', 'Skill not found', '未找到該技能'),
toolUnknown: _('未知工具', 'Unknown tool', '', '不明なツール'),
toolRejected: _('用户拒绝了此操作', 'User rejected this operation', '使用者拒絕了此操作', 'ユーザーがこの操作を拒否しました', '사용자가 이 작업을 거부했습니다'),
toolRejectedDanger: _('用户拒绝了危险操作', 'User rejected dangerous operation', '使用者拒絕了危險操作', 'ユーザーが危険な操作を拒否しました'),
askConfirm: _('确认', 'Confirm', '確認', '確認'),
askSkip: _('跳过', 'Skip', '略過', 'スキップ'),
askSkipped: _('(已跳过)', '(Skipped)', '(已略過)', '(スキップ済み)'),
askPlaceholder: _('请选择一个选项', 'Select an option', '請選擇一個選項'),
askCustomPlaceholder: _('输入自定义回答...', 'Enter custom answer...', '輸入自定義回答...'),
askNotSelected: _('请选择一个选项或输入自定义回答', 'Please select an option or enter a custom answer', '請選擇一個選項或輸入自定義回答'),
confirmRunCmd: _('将执行以下命令', 'Will execute the following command', '將執行以下命令', '以下のコマンドを実行します', '다음 명령을 실행합니다'),
confirmCwd: _('工作目录', 'Working directory', '工作目錄', '作業ディレクトリ', '작업 디렉토리'),
confirmWriteFile: _('将写入以下文件', 'Will write to the following file', '將写入以下檔案', '以下のファイルに書き込みます', '다음 파일에 쓰기'),
confirmPreview: _('内容预览', 'Content preview', '內容預覽', '内容プレビュー'),
confirmTruncated: _('(内容已截断)', '(Content truncated)', '(內容已截斷)'),
confirmCritical: _('⚠️ 这是一个危险操作,请仔细检查', '⚠️ This is a dangerous operation, please review carefully', '⚠️ 这是一個危險操作,請仔細檢查'),
confirmAllow: _('允许执行', 'Allow', '允許執行', '実行を許可', '실행 허용', 'Cho phép thực thi', 'Permitir ejecución', 'Permitir execução', 'Разрешить выполнение', 'Autoriser l\'exécution', 'Ausführung erlauben'),
confirmAiRequest: _('AI 请求执行以下操作', 'AI requests to perform the following operation', 'AI 請求執行以下操作', 'AI が以下の操作を要求しています'),
aiThinking: _('思考中...', 'Thinking...', '', '考え中...', '생각 중...', 'Đang suy nghĩ...', 'Pensando...', 'Pensando...', 'Думает...', 'Réflexion...', 'Denkt nach...'),
aiProcessingRound: _('第 {round} 轮处理中...', 'Processing round {round}...', '第 {round} 轮處理中...', '第 {round} ラウンド処理中...', '{round}라운드 처리 중...'),
toolLoopQuestion: _('AI 已执行 {round} 轮工具调用,如何继续?', 'AI has executed {round} rounds of tool calls. How to proceed?', 'AI 已執行 {round} 轮工具呼叫,如何繼續?', 'AI が {round} ラウンドのツール呼び出しを実行しました。続行しますか?', 'AI가 {round}라운드의 도구 호출을 실행했습니다. 계속하시겠습니까?'),
toolLoopContinue: _('继续自动执行 {rounds} 轮', 'Continue auto-executing {rounds} rounds', '繼續自動執行 {rounds} 轮', 'さらに {rounds} ラウンド自動実行', '추가 {rounds}라운드 자동 실행'),
toolLoopNoBreak: _('不再询问,持续执行', 'Don\'t ask again, keep executing', '不再询問,持續執行', '中断せず継続実行'),
toolLoopRethink: _('让 AI 重新思考', 'Let AI rethink', '讓 AI 重新思考', 'AI に再考させる'),
toolLoopStop: _('停止执行', 'Stop execution', '停止執行', '実行停止', '실행 중지'),
autoRoundsLabel: _('自动执行轮数', 'Auto-execution rounds', '自動執行轮數'),
autoRoundsDesc: _('工具调用在询问前的自动执行轮数', 'Number of auto-execution rounds before asking', '工具呼叫在询問前的自動執行轮數'),
autoRoundsHint: _('设为 0 表示每次都询问', 'Set to 0 to ask every time', '設為 0 表示每次都询問'),
autoRoundsUnit: _('轮', 'rounds'),
autoRoundsDefault: _('默认', 'Default', '預設'),
autoRoundsUnlimited: _('无限', 'Unlimited', '無限'),
errorAnalyze: _('让 AI 分析', 'Let AI analyze', '讓 AI 分析'),
errorDismiss: _('忽略', 'Dismiss'),
errorShowLog: _('展开日志', 'Show log', '展開日誌'),
errorHideLog: _('收起日志', 'Hide log', '收起日誌'),
welcomeText: _('你好!我是你的 AI 助手,有什么可以帮你的?', 'Hello! I\'m your AI assistant. How can I help you?', '你好!我是你的 AI 助手,有什么可以幫你的?', 'こんにちはAI アシスタントです。何かお手伝いできることはありますか?', '안녕하세요! AI 어시스턴트입니다. 무엇을 도와드릴까요?', 'Xin chào! Tôi là trợ lý AI. Tôi có thể giúp gì cho bạn?', '¡Hola! Soy el asistente IA. ¿En qué puedo ayudarle?', 'Olá! Sou o assistente IA. Como posso ajudar?', 'Здравствуйте! Я ИИ-ассистент. Чем могу помочь?', 'Bonjour ! Je suis l\'assistant IA. Comment puis-je vous aider ?', 'Hallo! Ich bin der KI-Assistent. Wie kann ich Ihnen helfen?'),
loading: _('加载中...', 'Loading...', '載入中...', '読み込み中...', '로딩 중...', 'Đang tải...', 'Cargando...', 'Carregando...', 'Загрузка...', 'Chargement...', 'Laden...'),
testConnTitle: _('连接测试', 'Connection Test', '連線測試', '接続テスト', '연결 테스트'),
testSuccess: _('连接成功', 'Connection successful', '連線成功', '接続成功', '연결 성공', 'Kết nối thành công', 'Conexión exitosa', 'Conexão bem-sucedida', 'Подключение успешно', 'Connexion réussie', 'Verbindung erfolgreich'),
testFailed: _('连接失败', 'Connection failed', '連線失敗', '接続失敗', '연결 실패', 'Kết nối thất bại', 'Conexión fallida', 'Conexão falhou', 'Ошибка подключения', 'Connexion échouée', 'Verbindung fehlgeschlagen'),
testNoReply: _('(无回复内容)', '(No reply content)', '(無回覆內容)', '(応答なし)'),
settingsTitle: _('助手设置', 'Assistant Settings', '助手設定', 'アシスタント設定', '어시스턴트 설정', 'Cài đặt trợ lý', 'Configuración del asistente', 'Configurações do assistente', 'Настройки ассистента', 'Paramètres de l\'assistant', 'Assistenten-Einstellungen'),
settings: _('设置', 'Settings', '設定', '設定', '설정', 'Cài đặt', 'Configuración', 'Configurações', 'Настройки', 'Paramètres', 'Einstellungen'),
settingsSaved: _('设置已保存', 'Settings saved', '設定已儲存', '設定を保存しました', '설정 저장됨', 'Đã lưu cài đặt', 'Configuración guardada', 'Configurações salvas', 'Настройки сохранены', 'Paramètres enregistrés', 'Einstellungen gespeichert'),
settingsTabApi: _('API 配置', 'API Config', 'API 設定', 'API 設定', 'API 설정'),
settingsTabTools: _('工具', 'Tools', '', 'ツール', '도구'),
settingsTabPersona: _('人设', 'Persona', '人設', 'ペルソナ', '페르소나'),
settingsTabKnowledge: _('知识库', 'Knowledge Base', '知識庫', 'ナレッジベース', '지식 베이스'),
apiType: _('接口类型', 'API Type', '介面類型', 'API タイプ', 'API 유형'),
model: _('模型', 'Model', '', 'モデル', '모델', 'Mô hình', 'Modelo', 'Modelo', 'Модель', 'Modèle', 'Modell'),
temperature: _('温度', 'Temperature', '溫度', '温度', '온도', 'Nhiệt độ', 'Temperatura', 'Temperatura', 'Температура', 'Température', 'Temperatur'),
quickSelect: _('快捷选择', 'Quick Select', '快捷選擇', 'クイック選択', '빠른 선택'),
visitSite: _('访问官网', 'Visit Website', '訪問官網', 'サイトを訪問', '사이트 방문'),
notConfigured: _('未配置', 'Not configured', '未設定', '未設定', '미설정'),
qtcoolName: _('晴辰云', 'QingChen Cloud', '晴辰雲'),
qtcoolDesc: _('GPT-5 / Codex 全系列,低至官方价 2-3 折', 'GPT-5 / Codex full series, as low as 20-30% of official price', 'GPT-5 / Codex 全系列,低至官方價 2-3 折'),
qtcoolRecommend: _('推荐', 'Recommended', '推薦'),
qtcoolCheckin: _('每日签到领额度', 'Daily check-in for credits', '每日簽到领额度'),
qtcoolLearnMore: _('了解更多 →', 'Learn more →'),
qtcoolKeyPlaceholder: _('粘贴你的 API Key', 'Paste your API Key', '貼上你的 API Key'),
qtcoolInstructions: _('没有 Key前往 <a>签到页</a> 免费领取', 'No key? Go to <a>check-in page</a> to get one for free', '沒有 Key前往 <a>簽到頁</a> 免費领取'),
qtcoolEnterKey: _('请输入 API Key', 'Please enter API Key', '請輸入 API Key'),
qtcoolFillFirst: _('请先填写 API Key', 'Please fill in API Key first', '請先填写 API Key'),
qtcoolConnecting: _('连接中...', 'Connecting...', '連線中...'),
qtcoolLoadingModels: _('正在获取模型列表...', 'Fetching model list...', '正在取得模型列表...'),
qtcoolConnectFail: _('连接失败', 'Connection failed', '連線失敗'),
qtcoolSelectModel: _('选择模型', 'Select model', '選擇模型'),
qtcoolApply: _('一键配置', 'One-Click Config', '一鍵設定'),
qtcoolConfigured: _('已配置', 'Configured', '已設定'),
qtcoolAssistantOnly: _('仅配置助手', 'Configure assistant only', '僅設定助手'),
qtcoolSetMain: _('设为主模型', 'Set as primary', '設為主模型'),
qtcoolSetMainDone: _('已设为主模型', 'Set as primary model', '已設為主模型'),
qtcoolMainSwitched: _('主模型已切换为 {model}', 'Primary model switched to {model}', '主模型已切換為 {model}'),
qtcoolTestPass: _('连接测试通过', 'Connection test passed', '連線測試通過'),
qtcoolTestFail: _('连接测试失败', 'Connection test failed', '連線測試失敗'),
qtcoolSyncTitle: _('同步到 OpenClaw', 'Sync to OpenClaw'),
qtcoolSyncDesc: _('将当前晴辰云配置同步到 OpenClaw 全局配置', 'Sync current QingChen Cloud config to OpenClaw global config', '將目前晴辰雲設定同步到 OpenClaw 全域設定'),
qtcoolSyncTo: _('同步到 OpenClaw', 'Sync to OpenClaw'),
qtcoolSyncToDesc: _('将晴辰云的 API 配置写入 OpenClaw 全局配置文件', 'Write QingChen Cloud API config to OpenClaw global config file', '將晴辰雲的 API 設定写入 OpenClaw 全域設定檔案'),
qtcoolSyncToTitle: _('确认同步到 OpenClaw', 'Confirm sync to OpenClaw', '確認同步到 OpenClaw'),
qtcoolConfirmSync: _('将覆盖 OpenClaw 中同名的 Provider确定继续', 'This will overwrite the same-name Provider in OpenClaw. Continue?', '將覆蓋 OpenClaw 中同名的 Provider確定繼續'),
qtcoolSyncToDone: _('已同步到 OpenClaw', 'Synced to OpenClaw'),
qtcoolSyncFail: _('同步失败', 'Sync failed', '同步失敗'),
qtcoolWriteFail: _('写入配置失败', 'Failed to write config', '写入設定失敗'),
qtcoolGatewayFail: _('Gateway 重启失败', 'Gateway restart failed', 'Gateway 重啟失敗'),
qtcoolAllDone: _('全部完成', 'All done'),
qtcoolSyncFrom: _('从 OpenClaw 读取', 'Read from OpenClaw', '從 OpenClaw 讀取'),
qtcoolSyncFromTitle: _('确认从 OpenClaw 读取', 'Confirm read from OpenClaw', '確認從 OpenClaw 讀取'),
qtcoolSyncFromDesc: _('将从 OpenClaw 读取配置:\nBase URL: {baseUrl}\nAPI Key: {apiKey}\n模型: {model}', 'Will read config from OpenClaw:\nBase URL: {baseUrl}\nAPI Key: {apiKey}\nModel: {model}', '將從 OpenClaw 讀取設定:\nBase URL: {baseUrl}\nAPI Key: {apiKey}\n模型: {model}'),
qtcoolConfirmRead: _('确认读取', 'Confirm Read', '確認讀取'),
qtcoolSyncFromDone: _('已从 OpenClaw 读取配置', 'Read config from OpenClaw', '已從 OpenClaw 讀取設定'),
qtcoolReadFail: _('读取失败', 'Read failed', '讀取失敗'),
qtcoolNoProvider: _('OpenClaw 中没有找到晴辰云的配置', 'QingChen Cloud config not found in OpenClaw', 'OpenClaw 中沒有找到晴辰雲的設定'),
testFillUrlKey: _('请先填写 Base URL 和 API Key', 'Please fill in Base URL and API Key first', '請先填写 Base URL 和 API Key', '先に Base URL と API Key を入力してください'),
testFillUrl: _('请先填写 Base URL', 'Please fill in Base URL first', '請先填写 Base URL', '先に Base URL を入力してください'),
testFillModel: _('请先填写模型名称', 'Please fill in model name first', '請先填写模型名稱', '先にモデル名を入力してください'),
testing: _('测试中...', 'Testing...', '測試中...', 'テスト中...', '테스트 중...', 'Đang kiểm tra...', 'Probando...', 'Testando...', 'Проверка...', 'Test en cours...', 'Wird getestet...'),
testSending: _('正在发送测试请求...', 'Sending test request...', '正在發送測試請求...', 'テストリクエスト送信中...'),
testBtn: _('测试连接', 'Test Connection', '測試連線', '接続テスト', '연결 테스트', 'Kiểm tra kết nối', 'Probar conexión', 'Testar conexão', 'Проверить подключение', 'Tester la connexion', 'Verbindung testen'),
fetching: _('获取中...', 'Fetching...', '取得中...', '取得中...', '가져오는 중...'),
fetchingModels: _('正在获取模型列表...', 'Fetching model list...', '正在取得模型列表...', 'モデルリスト取得中...'),
fetchModelsTitle: _('获取模型列表', 'Fetch Model List', '取得模型列表', 'モデルリスト取得', '모델 목록 가져오기'),
fetchBtn: _('获取列表', 'Fetch List', '取得列表', 'リスト取得', '목록 가져오기'),
noModelsFound: _('未找到可用模型', 'No available models found', '', '利用可能なモデルが見つかりません', '사용 가능한 모델 없음'),
modelsFound: _('找到 {count} 个模型', 'Found {count} models', '找到 {count} 個模型', '{count} モデルが見つかりました', '{count}개 모델 발견'),
personaSource: _('人设来源', 'Persona Source', '人設來源', 'ペルソナソース', '페르소나 소스'),
personaDefault: _('默认', 'Default', '預設', 'デフォルト', '기본'),
personaOpenClaw: _('OpenClaw Agent', 'OpenClaw Agent'),
personaOpenClawHint: _('从 OpenClaw Agent 继承身份和工作区设置', 'Inherit identity and workspace from OpenClaw Agent', '從 OpenClaw Agent 繼承身份和工作區設定', 'OpenClaw Agent からIDとワークスペース設定を継承'),
personaName: _('助手名称', 'Assistant Name', '助手名稱', 'アシスタント名', '어시스턴트 이름'),
personaPersonality: _('助手性格', 'Personality', '', 'アシスタント性格', '어시스턴트 성격'),
personaPersonalityHint: _('描述助手的性格特征', 'Describe the assistant\'s personality traits', '', 'アシスタントの性格特性を説明'),
personaSelectAgent: _('选择 Agent', 'Select Agent', '選擇 Agent', 'Agent を選択', 'Agent 선택'),
personaSelectFirst: _('请先选择一个 Agent', 'Please select an Agent first', '請先選擇一個 Agent', '先に Agent を選択してください'),
personaSoulInherit: _('继承 Soul 文件', 'Inherit Soul files', '繼承 Soul 檔案'),
personaSoulHint: _('使用 Agent 的 Soul 文件作为系统提示词的一部分', 'Use Agent\'s Soul files as part of the system prompt', '使用 Agent 的 Soul 檔案作為系統提示詞的一部分'),
personaLoadSoul: _('加载 Soul', 'Load Soul', '載入 Soul'),
personaLoadingAgent: _('正在加载 Agent 信息...', 'Loading Agent info...', '正在載入 Agent 資訊...'),
personaNoAgent: _('未找到 Agent', 'Agent not found'),
personaNoWorkspace: _('该 Agent 没有工作区', 'This Agent has no workspace', '該 Agent 沒有工作區'),
personaLoadFailed: _('加载失败', 'Load failed', '載入失敗'),
personaLoadFailedDetail: _('加载 Soul 文件失败', 'Failed to load Soul files', '載入 Soul 檔案失敗'),
personaRefreshTitle: _('刷新 Agent 列表', 'Refresh Agent List', '重新整理 Agent 列表'),
personaScanning: _('扫描中...', 'Scanning...', '掃描中...'),
kbDesc: _('自定义知识库AI 回答时会参考这些内容', 'Custom knowledge base, AI will reference these when answering', '自定義知識庫AI 回答時會參考这些內容', 'カスタムナレッジベース、AI 回答時に参照されます', '사용자 정의 지식 베이스, AI 응답 시 참조됩니다'),
kbEmpty: _('暂无知识库条目', 'No knowledge base entries', '暫無知識庫條目', 'ナレッジベースエントリなし', '지식 베이스 항목 없음'),
kbNamePlaceholder: _('知识库名称', 'Knowledge base name', '知識庫名稱', 'ナレッジベース名'),
kbContentPlaceholder: _('知识库内容...', 'Knowledge base content...', '知識庫內容...', 'ナレッジベース内容...'),
kbNameRequired: _('请填写名称', 'Please fill in name', '請填写名稱', '名前を入力してください'),
kbContentRequired: _('请填写内容', 'Please fill in content', '請填写內容', '内容を入力してください'),
kbSave: _('保存', 'Save', '儲存', '保存', '저장'),
kbSummary: _('摘要', 'Summary'),
kbLines: _('{count} 行', '{count} lines'),
kbClickEnable: _('点击启用', 'Click to enable', '点擊啟用'),
kbClickDisable: _('点击禁用', 'Click to disable', '点擊停用'),
importTitle: _('导入配置', 'Import Config', '导入設定'),
importBtn: _('导入 OpenClaw 配置', 'Import OpenClaw Config', '导入 OpenClaw 設定'),
importScanning: _('正在扫描本地 OpenClaw 配置...', 'Scanning local OpenClaw config...', '正在掃描本地 OpenClaw 設定...'),
importNoConfig: _('未找到可导入的配置', 'No importable config found', '未找到可导入的設定'),
importNoModels: _('无模型', 'No models', '無模型'),
importGlobal: _('全局配置', 'Global Config', '全域設定'),
importFound: _('找到 {count} 个可导入的配置', 'Found {count} importable configs', '找到 {count} 個可导入的設定'),
importDone: _('已导入 {name}{count} 个模型)', 'Imported {name} ({count} models)', '已导入 {name}{count} 個模型)'),
importFail: _('导入失败', 'Import failed', '导入失敗'),
stopped: _('已停止', 'Stopped', '', '停止', '중지됨', 'Đã dừng', 'Detenido', 'Parado', 'Остановлено', 'Arrêté', 'Gestoppt'),
requestInterrupted: _('请求中断', 'Request interrupted', '請求中斷'),
retry: _('重试', 'Retry', '重試', '再試行', '재시도', 'Thử lại', 'Reintentar', 'Tentar novamente', 'Повторить', 'Réessayer', 'Wiederholen'),
continueInput: _('输入继续', 'Continue Input', '輸入繼續'),
retryHint: _('请求失败(已自动重试 3 次)', 'Request failed (auto-retried 3 times)', '請求失敗(已自動重試 3 次)'),
retrying: _('重试中...', 'Retrying...', '重試中...'),
waitForReply: _('请等待 AI 回复后再发送图片', 'Please wait for AI reply before sending images', '請等待 AI 回覆后再發送圖片'),
waitForReplyShort: _('请等待回复', 'Please wait for reply', '請等待回覆'),
copyText: _('复制文本', 'Copy Text', '複製文本', 'テキストをコピー', '텍스트 복사', 'Sao chép văn bản', 'Copiar texto', 'Copiar texto', 'Копировать текст', 'Copier le texte', 'Text kopieren'),
copyMd: _('复制 Markdown', 'Copy Markdown', '複製 Markdown', 'Markdown をコピー', 'Markdown 복사'),
viewRaw: _('查看原始数据', 'View Raw Data', '查看原始資料'),
viewDebug: _('查看请求/响应', 'View Request/Response', '查看請求/回應'),
copiedText: _('已复制文本', 'Text copied', '已複製文本', 'テキストをコピーしました', '텍스트 복사됨'),
copiedMd: _('已复制 Markdown', 'Markdown copied', '已複製 Markdown', 'Markdown をコピーしました', 'Markdown 복사됨'),
rawData: _('消息原始数据', 'Raw Message Data', '訊息原始資料'),
debugInfo: _('请求/响应调试', 'Request/Response Debug', '請求/回應除錯'),
guideTag: _('内置 AI', 'Built-in AI', '內置 AI'),
guideTitle: _('这是 ClawPanel 内置的 AI 助手', 'This is ClawPanel\'s built-in AI assistant', '这是 ClawPanel 內置的 AI 助手'),
guideDesc: _(',独立于 OpenClaw使用你在右上角「设置」中配置的 API。', ', independent of OpenClaw, using the API configured in Settings.', ',獨立於 OpenClaw使用你在右上角「設定」中設定的 API。'),
guideHint: _('如需与 OpenClaw Agent 对话,请前往「实时聊天」页面。', 'To chat with OpenClaw Agents, go to the Live Chat page.', '如需與 OpenClaw Agent 對話,請前往「實時聊天」頁面。'),
uploadImage: _('上传图片', 'Upload Image', '上傳圖片', '画像アップロード', '이미지 업로드'),
inputPlaceholder: _('描述你的问题,粘贴日志、截图或错误信息...', 'Describe your issue, paste logs, screenshots or error messages...', '描述你的問題,貼上日誌、截圖或錯誤資訊...', '問題を説明、ログやスクリーンショットを貼り付け...', '문제를 설명하거나 로그/스크린샷을 붙여넣으세요...', 'Mô tả vấn đề...', 'Describa el problema...', 'Descreva o problema...', 'Опишите проблему...', 'Décrivez le problème...', 'Problem beschreiben...'),
send: _('发送', 'Send', '發送', '送信', '전송', 'Gửi', 'Enviar', 'Enviar', 'Отправить', 'Envoyer', 'Senden'),
inputHint: _('Enter 发送 · Shift+Enter 换行 · 支持粘贴/拖拽图片 · AI 助手独立于 OpenClaw', 'Enter to send · Shift+Enter for newline · Paste/drag images · Independent of OpenClaw', 'Enter 發送 · Shift+Enter 換行 · 支援貼上/拖曳圖片 · AI 助手獨立於 OpenClaw', 'Enter で送信 · Shift+Enter で改行 · 画像貼り付け/ドラッグ対応 · AI アシスタントは OpenClaw とは独立'),
autoSwitchExecute: _('已自动切换到执行模式', 'Auto-switched to Execute mode', '已自動切換到執行模式'),
}

View File

@@ -0,0 +1,307 @@
import { _ } from '../helper.js'
export default {
title: _('消息渠道', 'Channels', '訊息頻道', 'チャンネル', '채널', 'Kênh', 'Canales', 'Canais', 'Каналы', 'Canaux', 'Kanäle'),
desc: _('渠道列表管理接入;在 Agent 对接页为每个 Agent 绑定多条渠道路由,配置相互独立,并支持渠道连通性测试', 'Manage channel integrations; bind multiple channel routes per Agent with independent configs and connectivity testing', '頻道列表管理接入;在 Agent 对接頁為每個 Agent 綁定多條頻道路由,設定相互獨立,並支援頻道連通性測試', 'メッセージチャンネルの管理とプラットフォーム接続', '메시지 채널 관리 및 플랫폼 연결', 'Quản lý kênh tin nhắn và kết nối nền tảng', 'Gestionar canales de mensajería y conexiones de plataforma', 'Gerenciar canais de mensagens e conexões de plataforma', 'Управление каналами сообщений и подключение платформ', 'Gérer les canaux de messagerie et les connexions de plateforme', 'Nachrichtenkanäle und Plattformverbindungen verwalten'),
tabChannels: _('渠道列表', 'Channel List', '頻道列表'),
tabAgents: _('Agent 对接', 'Agent Binding'),
configured: _('已接入', 'Connected'),
available: _('可接入平台', 'Available Platforms'),
accountCount: _('{count} 个账号', '{count} accounts', '{count} 個账號'),
editAccount: _('编辑', 'Edit', '編輯'),
addAccount: _('添加账号', 'Add Account', '新增账號'),
editDefault: _('编辑默认', 'Edit Default', '編輯預設'),
noGuide: _('无向导', 'No guide', '無向导'),
disable: _('禁用', 'Disable', '停用', '無効化', '비활성화'),
enable: _('启用', 'Enable', '啟用', '有効化', '활성화'),
loadFailed: _('加载平台列表失败', 'Failed to load platform list', '載入平台列表失敗', 'チャンネルの読み込みに失敗', '채널 로드 실패', 'Tải thất bại', 'Error al cargar', 'Falha ao carregar', 'Ошибка загрузки', 'Échec du chargement', 'Laden fehlgeschlagen'),
agentBindHint: _('每个 Agent 可绑定多条路由(例如不同账号或匹配条件);绑定之间互不影响。请先在「渠道列表」中完成渠道接入。', 'Each Agent can have multiple route bindings (e.g. different accounts or match conditions). Bindings are independent. Complete channel setup in "Channel List" first.', '每個 Agent 可綁定多條路由(例如不同账號或匹配條件);綁定之間互不影響。請先在「頻道列表」中完成頻道接入。'),
createAgentFirst: _('请先在「Agent 管理」中创建 Agent', 'Please create an Agent in "Agent Management" first', '請先在「Agent 管理」中建立 Agent'),
qqbotLabel: _('QQ 机器人', 'QQ Bot', 'QQ 機器人'),
qqbotDesc: _('通过 QQ 开放平台接入,支持私聊和群聊', 'Connect via QQ Open Platform, supports DM and group chat', '通過 QQ 開放平台接入,支援私聊和群聊'),
qqbotGuide1: _('前往 <a href="https://q.qq.com" target="_blank" rel="noopener">QQ 开放平台</a> 创建机器人', '前往 <a href="https://q.qq.com" target="_blank" rel="noopener">QQ 开放平台</a> 创建机器人', '前往 <a href="https://q.qq.com" target="_blank" rel="noopener">QQ 開放平台</a> 建立機器人'),
qqbotGuide2: _('在「开发 → 开发设置」中获取 <strong>AppID</strong> 和 <strong>ClientSecret</strong>', '在「开发 → 开发设置」中获取 <strong>AppID</strong> 和 <strong>ClientSecret</strong>', '在「開發 → 開發設定」中取得 <strong>AppID</strong> 和 <strong>ClientSecret</strong>'),
qqbotGuide3: _('沙箱模式下可跳过审核直接测试', 'You can skip review and test directly in sandbox mode', '沙箱模式下可略過審核直接測試'),
qqbotGuide4: _('将机器人添加到你的 QQ 群(沙箱频道亦可)', 'Add the bot to your QQ group (sandbox channel also works)', '將機器人新增到你的 QQ 群(沙箱頻道亦可)'),
qqbotGuide5: _('填入下方凭证并保存,面板会自动安装插件、写入配置并重启 Gateway', 'Fill in credentials and save; the panel will auto-install the plugin, write config, and restart Gateway', '填入下方憑證並儲存,面板會自動安裝外掛、写入設定並重啟 Gateway'),
qqbotGuide6: _('在群里 @机器人 发消息即可开始对话', '@mention the bot in the group to start chatting', '在群里 @機器人 發訊息即可開始對話'),
qqbotGuideFooter: _('<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">遇到问题?参考 <a href="https://q.qq.com/qqbot/openclaw/faq.html" target="_blank" rel="noopener">OpenClaw × QQ 常见问题</a></div>', '<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">遇到问题?参考 <a href="https://q.qq.com/qqbot/openclaw/faq.html" target="_blank" rel="noopener">OpenClaw × QQ 常见问题</a></div>', '<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">遇到問題?參考 <a href="https://q.qq.com/qqbot/openclaw/faq.html" target="_blank" rel="noopener">OpenClaw × QQ 常见問題</a></div>'),
qqbotAppIdPh: _('QQ 开放平台 AppID', 'QQ Open Platform AppID', 'QQ 開放平台 AppID'),
qqbotSecretPh: _('QQ 开放平台 ClientSecret', 'QQ Open Platform ClientSecret', 'QQ 開放平台 ClientSecret'),
dingtalkLabel: _('钉钉', 'DingTalk', '釘釘'),
dingtalkDesc: _('通过钉钉企业内部应用接入,支持单聊和群聊', 'Connect via DingTalk enterprise internal app, supports DM and group chat', '通過釘釘企業內部應用接入,支援單聊和群聊', 'DingTalk に接続'),
dingtalkGuide1: _('前往 <a href="https://open-dev.dingtalk.com" target="_blank" rel="noopener">钉钉开放平台</a>,创建「企业内部应用」', '前往 <a href="https://open-dev.dingtalk.com" target="_blank" rel="noopener">钉钉开放平台</a>,创建「企业内部应用」', '前往 <a href="https://open-dev.dingtalk.com" target="_blank" rel="noopener">釘釘開放平台</a>,建立「企業內部應用」'),
dingtalkGuide2: _('在「应用功能 → 机器人」中启用机器人能力', 'Enable Robot capability under "App Features → Robot"', '在「應用功能 → 機器人」中啟用機器人能力'),
dingtalkGuide3: _('消息接收模式选择 <strong>Stream 模式</strong>(推荐)', 'Set message receive mode to <strong>Stream Mode</strong> (recommended)', '訊息接收模式選擇 <strong>Stream 模式</strong>(推薦)'),
dingtalkGuide4: _('在「凭证与基础信息」中获取 <strong>Client ID (AppKey)</strong> 和 <strong>Client Secret (AppSecret)</strong>', 'Get <strong>Client ID (AppKey)</strong> and <strong>Client Secret (AppSecret)</strong> from credentials page', '在「憑證與基礎資訊」中取得 <strong>Client ID (AppKey)</strong> 和 <strong>Client Secret (AppSecret)</strong>'),
dingtalkGuide5: _('权限管理中添加 <code>qyapi_robot_sendmsg</code>、<code>Card.Streaming.Write</code>、<code>Card.Instance.Write</code>', '权限管理中添加 <code>qyapi_robot_sendmsg</code>、<code>Card.Streaming.Write</code>、<code>Card.Instance.Write</code>', '權限管理中新增 <code>qyapi_robot_sendmsg</code>、<code>Card.Streaming.Write</code>、<code>Card.Instance.Write</code>'),
dingtalkGuide6: _('发布应用版本后,将机器人添加到目标群', 'Publish the app version, then add the bot to the target group', '發佈應用版本后,將機器人新增到目標群'),
dingtalkGuide7: _('填入下方凭证并保存,面板会自动安装插件并重启 Gateway', 'Fill in credentials and save; the panel will auto-install the plugin and restart Gateway', '填入下方憑證並儲存,面板會自動安裝外掛並重啟 Gateway'),
dingtalkGuideFooter: _('<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">注意Stream 模式需要钉钉服务端主动推送,确保网络可达</div>', '<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">注意Stream 模式需要钉钉服务端主动推送,确保网络可达</div>', '<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">注意Stream 模式需要釘釘伺服端主動推送,確保網路可達</div>'),
dingtalkClientIdPh: _('AppKey / Client ID', 'AppKey / Client ID'),
dingtalkClientSecretPh: _('AppSecret / Client Secret', 'AppSecret / Client Secret'),
feishuLabel: _('飞书', 'Feishu', '飛書'),
feishuDesc: _('通过飞书企业自建应用接入,支持单聊和群聊', 'Connect via Feishu custom enterprise app, supports DM and group chat', '通過飛書企業自建應用接入,支援單聊和群聊', 'Feishu に接続'),
feishuGuide1: _('前往 <a href="https://open.feishu.cn/app" target="_blank" rel="noopener">飞书开放平台</a> 创建企业自建应用', '前往 <a href="https://open.feishu.cn/app" target="_blank" rel="noopener">飞书开放平台</a> 创建企业自建应用', '前往 <a href="https://open.feishu.cn/app" target="_blank" rel="noopener">飛書開放平台</a> 建立企業自建應用'),
feishuGuide2: _('在「添加应用能力」中添加「机器人」', 'Add "Bot" capability under "Add App Capabilities"', '在「新增應用能力」中新增「機器人」'),
feishuGuide3: _('在「凭证与基础信息」中获取 <strong>App ID</strong> 和 <strong>App Secret</strong>', 'Get <strong>App ID</strong> and <strong>App Secret</strong> from credentials page', '在「憑證與基礎資訊」中取得 <strong>App ID</strong> 和 <strong>App Secret</strong>'),
feishuGuide4: _('事件回调选择「长连接」方式(无需公网 IP', 'Select "Long Connection" for event callback (no public IP needed)', '事件回調選擇「長連線」方式(無需公網 IP'),
feishuGuide5: _('权限管理中搜索并开通 <code>im:message</code>、<code>im:message.group_at_msg</code> 等消息权限', '权限管理中搜索并开通 <code>im:message</code>、<code>im:message.group_at_msg</code> 等消息权限', '權限管理中搜尋並開通 <code>im:message</code>、<code>im:message.group_at_msg</code> 等訊息權限'),
feishuGuide6: _('创建版本并发布后,将机器人添加到目标群', 'Create a version, publish, then add the bot to the target group', '建立版本並發佈后,將機器人新增到目標群'),
feishuGuideFooter: _('<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">推荐使用长连接方式,无需公网地址即可接收消息</div>', '<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">推荐使用长连接方式,无需公网地址即可接收消息</div>', '<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">推薦使用長連線方式,無需公網位址即可接收訊息</div>'),
feishuAppIdPh: _('飞书应用 App ID', 'Feishu App ID', '飛書應用 App ID'),
feishuAppSecretPh: _('飞书应用 App Secret', 'Feishu App Secret', '飛書應用 App Secret'),
feishuDomainLabel: _('平台域名', 'Platform Domain'),
feishuDomainFeishu: _('飞书 (feishu.cn)', 'Feishu (feishu.cn)', '飛書 (feishu.cn)'),
feishuDomainLark: _('Lark (larksuite.com)', 'Lark (larksuite.com)'),
telegramDesc: _('接入 Telegram Bot支持私聊和群组', 'Connect a Telegram Bot, supports DM and groups', '接入 Telegram Bot支援私聊和群組', 'Telegram Bot に接続'),
telegramGuide1: _('在 Telegram 中搜索 <a href="https://t.me/BotFather" target="_blank" rel="noopener">@BotFather</a> 并发送 <code>/newbot</code>', '在 Telegram 中搜索 <a href="https://t.me/BotFather" target="_blank" rel="noopener">@BotFather</a> 并发送 <code>/newbot</code>', '在 Telegram 中搜尋 <a href="https://t.me/BotFather" target="_blank" rel="noopener">@BotFather</a> 並發送 <code>/newbot</code>'),
telegramGuide2: _('按提示设置机器人名称和用户名', 'Follow prompts to set bot name and username', '按提示設定機器人名稱和使用者名'),
telegramGuide3: _('复制 BotFather 返回的 <strong>Bot Token</strong>', 'Copy the <strong>Bot Token</strong> returned by BotFather', '複製 BotFather 返回的 <strong>Bot Token</strong>'),
telegramGuide4: _('填入下方凭证并保存', 'Fill in credentials below and save', '填入下方憑證並儲存'),
telegramGuideFooter: _('<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">需要公网可达的服务器或使用 polling 模式</div>', '<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">需要公网可达的服务器或使用 polling 模式</div>', '<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">需要公網可達的伺服器或使用 polling 模式</div>'),
discordDesc: _('接入 Discord Bot支持服务器频道和私信', 'Connect a Discord Bot, supports server channels and DMs', '接入 Discord Bot支援伺服器頻道和私信', 'Discord Bot に接続'),
discordGuide1: _('前往 <a href="https://discord.com/developers/applications" target="_blank" rel="noopener">Discord Developer Portal</a> 创建 Application', '前往 <a href="https://discord.com/developers/applications" target="_blank" rel="noopener">Discord Developer Portal</a> 创建 Application', '前往 <a href="https://discord.com/developers/applications" target="_blank" rel="noopener">Discord Developer Portal</a> 建立 Application'),
discordGuide2: _('在 Bot 页面点击「Reset Token」获取 <strong>Bot Token</strong>', 'Click "Reset Token" on the Bot page to get the <strong>Bot Token</strong>', '在 Bot 頁面点擊「Reset Token」取得 <strong>Bot Token</strong>'),
discordGuide3: _('开启 <strong>MESSAGE CONTENT INTENT</strong>', 'Enable <strong>MESSAGE CONTENT INTENT</strong>', '開啟 <strong>MESSAGE CONTENT INTENT</strong>'),
discordGuide4: _('使用 OAuth2 URL Generator 邀请 Bot 加入服务器', 'Use OAuth2 URL Generator to invite the Bot to your server', '使用 OAuth2 URL Generator 邀請 Bot 加入伺服器'),
discordGuideFooter: _('<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">确保开启 Message Content Intent 以接收消息内容</div>', '<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">确保开启 Message Content Intent 以接收消息内容</div>', '<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">確保開啟 Message Content Intent 以接收訊息內容</div>'),
slackDesc: _('接入 Slack App支持频道和私信', 'Connect a Slack App, supports channels and DMs', '接入 Slack App支援頻道和私信', 'Slack に接続'),
slackGuide1: _('前往 <a href="https://api.slack.com/apps" target="_blank" rel="noopener">Slack API</a> 创建 App推荐 From a manifest', '前往 <a href="https://api.slack.com/apps" target="_blank" rel="noopener">Slack API</a> 创建 App推荐 From a manifest', '前往 <a href="https://api.slack.com/apps" target="_blank" rel="noopener">Slack API</a> 建立 App推薦 From a manifest'),
slackGuide2: _('在 OAuth & Permissions 中添加 Bot Token Scopes<code>chat:write</code>、<code>app_mentions:read</code> 等', 'Add Bot Token Scopes in OAuth & Permissions: <code>chat:write</code>, <code>app_mentions:read</code>, etc.', '在 OAuth & Permissions 中新增 Bot Token Scopes<code>chat:write</code>、<code>app_mentions:read</code> 等'),
slackGuide3: _('安装 App 到工作区,获取 <strong>Bot Token</strong>xoxb-', 'Install the App to your workspace and get the <strong>Bot Token</strong> (xoxb-)', '安裝 App 到工作區,取得 <strong>Bot Token</strong>xoxb-'),
slackGuide4: _('Socket Mode在 Basic Information 中开启 Socket Mode获取 <strong>App-Level Token</strong>xapp-', 'Socket Mode: Enable Socket Mode in Basic Information and get the <strong>App-Level Token</strong> (xapp-)', 'Socket Mode在 Basic Information 中開啟 Socket Mode取得 <strong>App-Level Token</strong>xapp-'),
slackGuide5: _('HTTP Mode在 Event Subscriptions 中填入请求 URL', 'HTTP Mode: Fill in the Request URL under Event Subscriptions', 'HTTP Mode在 Event Subscriptions 中填入請求 URL'),
slackGuideFooter: _('<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">Socket Mode 无需公网地址HTTP Mode 需要配置事件回调 URL</div>', '<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">Socket Mode 无需公网地址HTTP Mode 需要配置事件回调 URL</div>', '<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">Socket Mode 無需公網位址HTTP Mode 需要設定事件回調 URL</div>'),
modeLabel: _('连接模式', 'Connection Mode', '連線模式'),
slackSocketMode: _('Socket Mode推荐', 'Socket Mode (recommended)', 'Socket Mode推薦'),
slackHttpMode: _('HTTP Mode', 'HTTP Mode'),
slackAppTokenHint: _('Socket Mode 需要 App-Level Token (xapp-)', 'Socket Mode requires App-Level Token (xapp-)'),
slackSigningSecretPh: _('Signing Secret', 'Signing Secret'),
slackSigningSecretHint: _('HTTP Mode 下用于验证请求签名', 'Used to verify request signatures in HTTP Mode', 'HTTP Mode 下用於驗證請求簽章'),
slackTeamIdPh: _('可选,如 T01234567', 'Optional, e.g. T01234567', '可選,如 T01234567'),
slackWebhookPathPh: _('可选,如 /slack/events', 'Optional, e.g. /slack/events', '可選,如 /slack/events'),
dmPolicy: _('私信策略', 'DM Policy'),
policyDefault: _('默认', 'Default', '預設'),
dmAllow: _('允许私信', 'Allow DMs', '允許私信'),
dmDeny: _('拒绝私信', 'Deny DMs', '拒絕私信'),
groupPolicy: _('群组策略', 'Group Policy', '群組策略'),
groupAllChannels: _('所有频道', 'All channels', '所有頻道'),
groupMentionOnly: _('仅 @提及时', 'Only when @mentioned', '僅 @提及時'),
groupAllowlist: _('白名单', 'Allowlist', '白名單'),
allowFromPh: _('可选,逗号分隔用户/频道 ID', 'Optional, comma-separated user/channel IDs', '可選,逗號分隔使用者/頻道 ID'),
allowFromHint: _('限制允许的用户或频道 ID留空不限制', 'Restrict to specific user or channel IDs; leave empty for no restriction', '限制允許的使用者或頻道 ID留空不限制'),
weixinLabel: _('微信', 'WeChat'),
weixinDesc: _('通过 openclaw-weixin 插件接入个人微信', 'Connect personal WeChat via the openclaw-weixin plugin', '通過 openclaw-weixin 外掛接入個人微信'),
weixinGuide1: _('本功能基于 <strong>openclaw-weixin</strong> 插件', 'This feature is powered by the <strong>openclaw-weixin</strong> plugin', '本功能基於 <strong>openclaw-weixin</strong> 外掛'),
weixinGuide2: _('点击下方「一键安装插件」自动安装', 'Click "Install Plugin" below to auto-install', '点擊下方「一鍵安裝外掛」自動安裝'),
weixinGuide3: _('安装完成后点击「扫码登录」,用手机微信扫描二维码', 'After installation, click "Scan to Login" and scan the QR code with your phone', '安裝完成后点擊「掃碼登入」,用手機微信掃描二维碼'),
weixinGuide4: _('登录成功后 Gateway 会自动接管消息', 'Once logged in, Gateway will automatically handle messages', '登入成功后 Gateway 會自動接管訊息'),
weixinGuide5: _('若掉线需重新扫码登录', 'Re-scan is needed if disconnected', '若掉線需重新掃碼登入'),
weixinGuideFooter: _('<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">注意:个人微信接入存在风控风险,建议使用小号</div>', '<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">注意:个人微信接入存在风控风险,建议使用小号</div>', '<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">注意:個人微信接入存在風控風險,建議使用小號</div>'),
weixinInstall: _('一键安装插件', 'Install Plugin', '一鍵安裝外掛'),
weixinInstallHint: _('自动下载并安装 openclaw-weixin 插件', 'Auto-download and install the openclaw-weixin plugin', '自動下載並安裝 openclaw-weixin 外掛'),
weixinLogin: _('扫码登录', 'Scan to Login', '掃碼登入'),
weixinLoginHint: _('启动微信登录流程,扫码后自动接管消息', 'Start the WeChat login flow; messages are handled after scanning', '啟動微信登入流程,掃碼后自動接管訊息'),
weixinScanQr: _('用手机微信扫描此二维码', 'Scan this QR code with WeChat on your phone', '用手機微信掃描此二维碼'),
msteamsDesc: _('接入 Microsoft Teams Bot', 'Connect a Microsoft Teams Bot'),
msteamsGuide1: _('在 <a href="https://portal.azure.com" target="_blank" rel="noopener">Azure Portal</a> 注册 Bot Channel Registration', '在 <a href="https://portal.azure.com" target="_blank" rel="noopener">Azure Portal</a> 注册 Bot Channel Registration', '在 <a href="https://portal.azure.com" target="_blank" rel="noopener">Azure Portal</a> 註冊 Bot Channel Registration'),
msteamsGuide2: _('获取 <strong>App ID</strong> 和 <strong>App Password</strong>', 'Get the <strong>App ID</strong> and <strong>App Password</strong>', '取得 <strong>App ID</strong> 和 <strong>App Password</strong>'),
msteamsGuide3: _('在 Teams 中安装自定义 App', 'Install the custom App in Teams', '在 Teams 中安裝自定義 App'),
msteamsGuide4: _('配置消息端点 URL', 'Configure the messaging endpoint URL', '設定訊息端点 URL'),
msteamsGuideFooter: _('<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">需要 Azure AD 应用注册和 Teams 管理员权限</div>', '<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">需要 Azure AD 应用注册和 Teams 管理员权限</div>', '<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">需要 Azure AD 應用註冊和 Teams 管理員權限</div>'),
msteamsTenantIdPh: _('可选,单租户时填写', 'Optional, fill for single-tenant', '可選,單租戶時填写'),
msteamsAllowFromPh: _('可选,逗号分隔', 'Optional, comma-separated', '可選,逗號分隔'),
signalDesc: _('接入 Signal Messenger', 'Connect to Signal Messenger', '', 'Signal に接続'),
signalGuide1: _('安装 <a href="https://github.com/AsamK/signal-cli" target="_blank" rel="noopener">signal-cli</a> 并注册/链接账号', '安装 <a href="https://github.com/AsamK/signal-cli" target="_blank" rel="noopener">signal-cli</a> 并注册/链接账号', '安裝 <a href="https://github.com/AsamK/signal-cli" target="_blank" rel="noopener">signal-cli</a> 並註冊/連結账號'),
signalGuide2: _('确保 signal-cli 可正常收发消息', 'Ensure signal-cli can send and receive messages', '確保 signal-cli 可正常收發訊息'),
signalGuide3: _('填入账号信息和 signal-cli 路径', 'Fill in account info and signal-cli path', '填入账號資訊和 signal-cli 路徑'),
signalGuideFooter: _('<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">需要本地安装 signal-cli 并完成账号注册</div>', '<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">需要本地安装 signal-cli 并完成账号注册</div>', '<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">需要本地安裝 signal-cli 並完成账號註冊</div>'),
signalAccountLabel: _('Signal 账号', 'Signal Account', 'Signal 账號'),
signalAccountPh: _('+1234567890', '+1234567890'),
signalCliPathLabel: _('signal-cli 路径', 'signal-cli Path', 'signal-cli 路徑'),
signalCliPathPh: _('可选,默认从 PATH 查找', 'Optional, defaults to PATH lookup', '可選,預設從 PATH 尋找'),
signalAllowFromPh: _('可选,逗号分隔', 'Optional, comma-separated', '可選,逗號分隔'),
matrixDesc: _('接入 Matrix 协议Element 等客户端)', 'Connect via Matrix protocol (Element and other clients)', '接入 Matrix 协議Element 等用戶端)', 'Matrix プロトコルに接続'),
matrixGuide1: _('在 Matrix 服务器上注册 Bot 账号', 'Register a Bot account on a Matrix server', '在 Matrix 伺服器上註冊 Bot 账號'),
matrixGuide2: _('获取 <strong>Access Token</strong>(或使用用户名密码)', 'Get an <strong>Access Token</strong> (or use username & password)', '取得 <strong>Access Token</strong>(或使用使用者名密碼)'),
matrixGuide3: _('邀请 Bot 加入目标房间', 'Invite the Bot to the target room', '邀請 Bot 加入目標房間'),
matrixGuideFooter: _('<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">支持任何兼容 Matrix 协议的服务器</div>', '<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">支持任何兼容 Matrix 协议的服务器</div>', '<div style="margin-top:8px;font-size:var(--font-size-xs);color:var(--text-tertiary)">支援任何相容 Matrix 协議的伺服器</div>'),
matrixAccessTokenHint: _('使用 Access Token 或 User ID + Password 二选一', 'Use either Access Token or User ID + Password', '使用 Access Token 或 User ID + Password 二選一'),
matrixPasswordPh: _('使用 Access Token 时可留空', 'Leave empty when using Access Token', '使用 Access Token 時可留空'),
matrixAllowFromPh: _('可选,逗号分隔用户 ID', 'Optional, comma-separated user IDs', '可選,逗號分隔使用者 ID'),
matrixAuthRequired: _('Matrix 需要填写 Access Token或填写 User ID + Password', 'Matrix requires an Access Token, or User ID + Password'),
groupAllGroups: _('所有群组', 'All groups', '所有群組'),
groupAllRooms: _('所有房间', 'All rooms', '所有房間'),
groupAllTeams: _('所有团队', 'All teams', '所有團队'),
groupMentionBot: _('仅 @机器人时', 'Only when @bot', '僅 @機器人時'),
optionalEg: _('可选,如', 'Optional, e.g.', '可選,如'),
editAccountLabel: _('编辑 {id}', 'Edit {id}', '編輯 {id}'),
bound: _('已绑定', 'Bound', '已綁定'),
notBoundAgent: _('未绑定 Agent', 'No Agent bound', '未綁定 Agent'),
addAgentBindingForAccount: _('添加 Agent 绑定', 'Add Agent Binding', '新增 Agent 綁定'),
addAgentBindingSub: _('为该账号添加新的 Agent 路由', 'Add a new Agent route for this account', '為該账號新增新的 Agent 路由'),
editConfig: _('编辑配置', 'Edit Config', '編輯設定'),
addAgentBinding: _('添加 Agent 绑定', 'Add Agent Binding', '新增 Agent 綁定'),
routeToAgent: _('将收到的消息路由到指定 Agent', 'Route incoming messages to a specific Agent', '將收到的訊息路由到指定 Agent'),
addNewAccount: _('添加新账号', 'Add New Account', '新增新账號'),
addNewAccountSub: _('创建一个新的机器人账号配置', 'Create a new bot account configuration', '建立一個新的機器人账號設定'),
actions: _('操作', 'Actions', '', '操作'),
bindAgentTitle: _('绑定 Agent', 'Bind Agent', '綁定 Agent'),
targetAgent: _('目标 Agent', 'Target Agent', '目標 Agent'),
targetAgentHint: _('选择接收消息的 Agent', 'Select the Agent to receive messages', '選擇接收訊息的 Agent'),
peerScope: _('匹配范围', 'Match Scope', '匹配範圍'),
peerAll: _('全部(私聊+群聊)', 'All (DM + Group)'),
peerAllHint: _('接收该渠道所有消息', 'Receive all messages from this channel', '接收該頻道所有訊息'),
peerDirect: _('仅私聊', 'DM Only', '僅私聊'),
peerDirectHint: _('仅接收一对一私聊消息', 'Only receive one-on-one direct messages', '僅接收一对一私聊訊息'),
peerDirectLabel: _('私聊', 'DM'),
peerGroup: _('仅群聊', 'Group Only', '僅群聊'),
peerGroupHint: _('仅接收群组/频道消息', 'Only receive group/channel messages', '僅接收群組/頻道訊息'),
peerGroupLabel: _('群聊', 'Group'),
peerIdHint: _('目标 ID', 'Target ID', '目標 ID'),
peerIdHintDetailed: _('限定特定群/用户 ID留空则匹配所有', 'Restrict to a specific group/user ID; leave empty to match all', '限定特定群/使用者 ID留空則匹配所有'),
targetId: _('目标 ID', 'Target ID', '目標 ID'),
saveBinding: _('保存绑定', 'Save Binding', '儲存綁定'),
duplicateBinding: _('已存在相同的绑定配置', 'A binding with the same configuration already exists', '已存在相同的綁定設定'),
saving: _('保存中...', 'Saving...', '儲存中...', '保存中...', '저장 중...'),
bindingSaved: _('绑定已保存', 'Binding saved', '綁定已儲存'),
saveFailed: _('保存失败', 'Save failed', '儲存失敗', '保存失敗', '저장 실패', 'Lưu thất bại', 'Error al guardar', 'Falha ao salvar', 'Ошибка сохранения', 'Échec de la sauvegarde', 'Speichern fehlgeschlagen'),
accountLabel: _('账号', 'Account', '账號'),
defaultAccount: _('默认账号', 'Default Account', '預設账號'),
accountShort: _('账号', 'Acct', '账號'),
peerDm: _('私聊', 'DM'),
peerGroupShort: _('群聊', 'Group'),
peerChannelShort: _('频道', 'Channel', '頻道'),
noAgents: _('暂无 Agent', 'No Agents', '暫無 Agent'),
orphanAgent: _('配置中存在绑定,但当前 Agent 列表中无此 ID', 'Binding exists in config but Agent ID not found in current list', '設定中存在綁定,但目前 Agent 列表中無此 ID'),
diagnose: _('联通诊断', 'Diagnose', '聯通诊斷'),
remove: _('移除', 'Remove'),
noBindings: _('尚未绑定任何渠道', 'No channel bindings yet', '尚未綁定任何頻道'),
addChannelBinding: _('添加渠道绑定', 'Add Channel Binding', '新增頻道綁定'),
enableChannelFirst: _('请先在「渠道列表」中接入并启用至少一个渠道', 'Please connect and enable at least one channel in "Channel List" first', '請先在「頻道列表」中接入並啟用至少一個頻道'),
confirmRemoveBinding: _('确定移除该绑定?', 'Remove this binding?', '確定移除該綁定?'),
bindingRemoved: _('绑定已移除', 'Binding removed', '綁定已移除'),
addBindingForAgent: _('为 {agent} 添加渠道绑定', 'Add channel binding for {agent}', '為 {agent} 新增頻道綁定'),
channel: _('渠道', 'Channel', '頻道'),
bindingIndependentHint: _('每条绑定独立生效,可为同一渠道添加多条不同匹配规则', 'Each binding works independently; you can add multiple rules for the same channel', '每條綁定獨立生效,可為同一頻道新增多條不同匹配規則'),
subAccount: _('子账号', 'Sub-account', '子账號'),
noMultiAccount: _('该渠道不支持多账号', 'This channel does not support multiple accounts', '該頻道不支援多账號'),
noMultiAccountHint: _('请先在渠道列表中添加多个账号', 'Add multiple accounts in the channel list first', '請先在頻道列表中新增多個账號'),
confirmRemoveAccount: _('确定移除该账号及其所有配置?', 'Remove this account and all its config?', '確定移除該账號及其所有設定?'),
removed: _('已移除', 'Removed'),
removeFailed: _('移除失败', 'Remove failed', '移除失敗'),
disabled: _('已禁用', 'Disabled', '已停用'),
enabled: _('已启用', 'Enabled', '已啟用'),
operationFailed: _('操作失败', 'Operation failed', '操作失敗'),
confirmRemovePlatform: _('确定移除该平台及其所有配置?', 'Remove this platform and all its config?', '確定移除該平台及其所有設定?'),
supportsActions: _('支持操作', 'Supports actions', '支援操作'),
connectedClickEdit: _('已接入,点击编辑', 'Connected, click to edit', '已接入,点擊編輯'),
qqDiagAllPassed: _('全部检查通过 ✓', 'All checks passed ✓', '全部檢查通過 ✓'),
qqDiagHasFailed: _('存在未通过的检查项', 'Some checks failed', '存在未通過的檢查項'),
qqRepairHint: _('可尝试一键修复:重新安装插件并重启 Gateway', 'Try one-click repair: reinstall plugin and restart Gateway', '可尝試一鍵修复:重新安裝外掛並重啟 Gateway'),
qqRepairBtn: _('一键修复', 'One-Click Repair', '一鍵修复'),
qqFaqBtn: _('打开 QQ OpenClaw 常见问题', 'Open QQ OpenClaw FAQ', '開啟 QQ OpenClaw 常见問題'),
qqDiagTitle: _('QQ 联通诊断', 'QQ Connectivity Diagnosis', 'QQ 聯通诊斷'),
notes: _('说明', 'Notes', '說明'),
processing: _('处理中...', 'Processing...', '處理中...'),
repairDone: _('修复完成', 'Repair complete'),
repairFailed: _('修复失败', 'Repair failed', '修复失敗'),
unknownChannelType: _('无法识别渠道类型', 'Unrecognized channel type', '無法識別頻道類型'),
diagnosing: _('诊断中...', 'Diagnosing...', '诊斷中...'),
testing: _('测试中...', 'Testing...', '測試中...', 'テスト中...', '테스트 중...', 'Đang kiểm tra...', 'Probando...', 'Testando...', 'Проверка...', 'Test en cours...', 'Wird getestet...'),
noCredentialsFound: _('未找到该渠道在配置中的凭证', 'No credentials found for this channel in config', '未找到該頻道在設定中的憑證'),
testPassed: _('渠道测试通过', 'Channel test passed', '頻道測試通過'),
verifyFailed: _('校验失败', 'Verification failed', '校驗失敗'),
testFailed: _('渠道测试失败', 'Channel test failed', '頻道測試失敗', '接続失敗', '연결 실패', 'Kết nối thất bại', 'Conexión fallida', 'Conexão falhou', 'Ошибка подключения', 'Connexion échouée', 'Verbindung fehlgeschlagen'),
diagFailed: _('诊断失败', 'Diagnosis failed', '诊斷失敗'),
connectingGateway: _('连接 Gateway...', 'Connecting Gateway...', '連線 Gateway...'),
gatewayNotConnected: _('Gateway 未连接', 'Gateway not connected', 'Gateway 未連線'),
generatingQr: _('正在生成二维码...', 'Generating QR code...', '正在生成二维碼...'),
generatingQrShort: _('生成二维码...', 'Generating QR...', '生成二维碼...'),
whatsappScanQr: _('用手机 WhatsApp 扫描此二维码', 'Scan this QR code with WhatsApp on your phone', '用手機 WhatsApp 掃描此二维碼'),
whatsappScanPath: _('WhatsApp → 已连接的设备 → 连接设备', 'WhatsApp → Linked Devices → Link a Device', 'WhatsApp → 已連線的設備 → 連線設備'),
waitingScan: _('等待扫码...', 'Waiting for scan...', '等待掃碼...'),
whatsappLinked: _('WhatsApp 链接成功!', 'WhatsApp linked successfully!', 'WhatsApp 連結成功!'),
whatsappAlreadyLinked: _('WhatsApp 已链接,无需重新扫码', 'WhatsApp is already linked, no need to re-scan', 'WhatsApp 已連結,無需重新掃碼'),
linkedSuccess: _('链接成功!', 'Linked successfully!', '連結成功!'),
scanTimeout: _('扫码超时', 'Scan timed out', '掃碼逾時'),
scanTimeoutRetry: _('扫码超时或未完成,请重试', 'Scan timed out or not completed, please retry', '掃碼逾時或未完成,請重試'),
whatsappNotAvailableHint: _('WhatsApp 插件未加载', 'WhatsApp plugin not loaded', 'WhatsApp 外掛未載入'),
scanLoginFailed: _('扫码登录失败', 'Scan login failed', '掃碼登入失敗'),
unknownPlatform: _('未知平台', 'Unknown platform'),
setupSteps: _('接入步骤', 'Setup Steps', '接入步驟'),
clickToExpand: _('点击展开', 'click to expand', '点擊展開'),
docsOnlyTitle: _('当前面板暂未完成该渠道的可用配置向导', 'Configuration wizard for this channel is not yet available', '目前面板暂未完成該頻道的可用設定向导'),
docsOnlyDefault: _('请先按上游文档或 CLI 完成接入', 'Please complete setup via upstream docs or CLI first', '請先按上游文件或 CLI 完成接入'),
setupGuide: _('接入说明', 'Setup Guide', '接入說明'),
gotIt: _('知道了', 'Got It'),
detectingPlugin: _('检测插件状态...', 'Detecting plugin status...', '檢測外掛狀態...'),
operations: _('操作', 'Operations'),
setup: _('接入', 'Setup'),
close: _('关闭', 'Close', '關閉'),
pluginStatusFailed: _('无法获取插件状态', 'Failed to get plugin status', '無法取得外掛狀態'),
pluginInstalled: _('已安装', 'Installed', '已安裝', 'プラグインインストール済み'),
version: _('版本', 'Version'),
unknown: _('未知', 'Unknown'),
newVersionAvailable: _('新版 {version} 可用,点击「升级插件」更新', 'New version {version} available, click "Upgrade Plugin" to update', '新版 {version} 可用,点擊「升級外掛」更新'),
upgradePlugin: _('升级插件', 'Upgrade Plugin', '升級外掛'),
upToDate: _('已是最新', 'Up to date'),
pluginNotInstalled: _('未安装', 'Not installed', '未安裝', 'プラグイン未インストール'),
latestVersion: _('最新版', 'Latest version'),
clickInstallBelow: _('点击下方「一键安装插件」开始', 'Click "Install Plugin" below to get started', '点擊下方「一鍵安裝外掛」開始'),
executing: _('正在执行', 'Executing', '正在執行'),
executingShort: _('执行中...', 'Executing...', '執行中...'),
executingAction: _('正在执行渠道动作', 'Executing channel action', '正在執行頻道動作'),
executionDone: _('执行完成', 'Execution complete', '執行完成'),
executionFailed: _('执行失败', 'Execution failed', '執行失敗'),
unknownError: _('未知错误', 'Unknown error', '未知錯誤'),
execute: _('执行', 'Execute', '執行'),
channelConnected: _('🎉 渠道连接成功!正在刷新列表…', '🎉 Channel connected! Refreshing list...', '🎉 頻道連線成功!正在重新整理列表…'),
reDetecting: _('重新检测…', 'Re-detecting...', '重新檢測…'),
actionDone: _('渠道动作执行完成', 'Channel action completed', '頻道動作執行完成'),
actionFailed: _('渠道动作执行失败', 'Channel action failed', '頻道動作執行失敗'),
accountIdentifier: _('账号标识', 'Account Identifier', '账號標識'),
accountIdPlaceholder: _('留空为默认账号;修改会创建新账号', 'Leave empty for default account; changing creates a new account', '留空為預設账號;修改會建立新账號'),
accountIdHint: _('每个账号对应一个独立机器人。不同账号可绑定不同 Agent。', 'Each account corresponds to an independent bot. Different accounts can bind to different Agents.', '每個账號对應一個獨立機器人。不同账號可綁定不同 Agent。'),
bindAgent: _('绑定 Agent', 'Bind Agent', '綁定 Agent', 'Agent をバインド', 'Agent 바인딩', 'Liên kết Agent', 'Vincular Agent', 'Vincular Agent', 'Привязать агента', 'Lier un Agent', 'Agent verknüpfen'),
bindAgentHint: _('该账号收到的消息路由到哪个 Agent可在「Agent 对接」页添加更多绑定)。', 'Which Agent receives messages for this account (add more bindings in "Agent Binding" tab).', '該账號收到的訊息路由到哪個 Agent可在「Agent 对接」頁新增更多綁定)。'),
show: _('显示', 'Show', '顯示'),
hide: _('隐藏', 'Hide', '隱藏'),
pairingApproval: _('配对审批', 'Pairing Approval', '配对審批'),
pairingApprovalHint: _('当机器人提示 <code>access not configured</code>、<code>Pairing code</code> 或要求执行 <code>openclaw pairing approve</code> 时,可直接在这里完成批准。', 'When the bot shows <code>access not configured</code>, <code>Pairing code</code>, or asks to run <code>openclaw pairing approve</code>, you can approve directly here.', '當機器人提示 <code>access not configured</code>、<code>Pairing code</code> 或要求執行 <code>openclaw pairing approve</code> 時,可直接在這裡完成批準。'),
pairingCodePlaceholder: _('例如 R3ZFPWZP', 'e.g. R3ZFPWZP', '', 'ペアリングコードを入力'),
viewPending: _('查看待审批', 'View Pending', '查看待審批'),
approvePairingCode: _('批准配对码', 'Approve Pairing Code', '批準配对碼'),
preActions: _('运行前动作', 'Pre-run Actions', '執行前動作'),
preActionsHint: _('适用于需要先执行 CLI 登录、扫码或初始化命令的渠道。', 'For channels that require CLI login, scanning, or initialization commands first.', '適用於需要先執行 CLI 登入、掃碼或初始化命令的頻道。'),
gatewayAuthAutoFilled: _('已从当前 Gateway 鉴权配置中自动带出 {type},通常无需手填', 'Auto-filled {type} from current Gateway auth config; usually no need to fill manually', '已從目前 Gateway 鉴權設定中自動帶出 {type},通常無需手填'),
existingConfigHint: _('当前已有配置,修改后点击保存即可覆盖', 'Existing config found; edit and click Save to overwrite', '目前已有設定,修改后点擊儲存即可覆蓋'),
fullDiagnose: _('完整联通诊断', 'Full Connectivity Diagnosis', '完整聯通诊斷'),
qqDiagHint: _('检查<strong>已保存到配置文件</strong>的凭证、本机 Gateway 端口、<code>/__api/health</code>、QQ 插件与 chatCompletions。QQ 提示「灵魂不在线」时优先看此处,并参考 <a href="https://q.qq.com/qqbot/openclaw/faq.html" target="_blank" rel="noopener">OpenClaw × QQ 常见问题</a>。', '检查<strong>已保存到配置文件</strong>的凭证、本机 Gateway 端口、<code>/__api/health</code>、QQ 插件与 chatCompletions。QQ 提示「灵魂不在线」时优先看此处,并参考 <a href="https://q.qq.com/qqbot/openclaw/faq.html" target="_blank" rel="noopener">OpenClaw × QQ 常见问题</a>。', '檢查<strong>已儲存到設定檔案</strong>的憑證、本機 Gateway 連接埠、<code>/__api/health</code>、QQ 外掛與 chatCompletions。QQ 提示「靈魂不線上」時優先看此處,並參考 <a href="https://q.qq.com/qqbot/openclaw/faq.html" target="_blank" rel="noopener">OpenClaw × QQ 常见問題</a>。'),
edit: _('编辑', 'Edit', '編輯', '編集', '편집', 'Sửa', 'Editar', 'Editar', 'Редактировать', 'Modifier', 'Bearbeiten'),
connect: _('接入', 'Connect'),
verifyCredentials: _('校验凭证', 'Verify Credentials', '校驗憑證'),
save: _('保存', 'Save', '儲存', '保存', '저장', 'Lưu', 'Guardar', 'Salvar', 'Сохранить', 'Enregistrer', 'Speichern'),
connectAndSave: _('接入并保存', 'Connect & Save', '接入並儲存'),
reading: _('读取中...', 'Reading...', '讀取中...'),
pendingRequests: _('待审批请求', 'Pending Requests', '待審批請求'),
noPendingRequests: _('暂无待审批请求', 'No pending requests', '暫無待審批請求'),
readFailed: _('读取失败', 'Read failed', '讀取失敗'),
enterPairingCode: _('请输入配对码', 'Please enter pairing code', '請輸入配对碼'),
approving: _('批准中...', 'Approving...', '批準中...', '承認中...'),
pairingApproved: _('配对已批准', 'Pairing approved', '配对已批準'),
operationComplete: _('操作完成', 'Operation complete'),
approveFailed: _('批准失败', 'Approve failed', '批準失敗', '承認失敗', '승인 실패'),
pleaseFill: _('请填写「{field}」', 'Please fill in "{field}"', '請填写「{field}」'),
verifying: _('校验中...', 'Verifying...', '校驗中...'),
credentialsValid: _('凭证有效', 'Credentials valid', '憑證有效'),
qqVerifyNote: _('此项只验证 AppID/Secret 能否向腾讯换 token。<strong>不能</strong>代表 QQ 里机器人已在线;若提示「灵魂不在线」,请使用下方 <strong>完整联通诊断</strong> 并对照 <a href="https://q.qq.com/qqbot/openclaw/faq.html" target="_blank" rel="noopener">QQ OpenClaw 常见问题</a>。', '此项只验证 AppID/Secret 能否向腾讯换 token。<strong>不能</strong>代表 QQ 里机器人已在线;若提示「灵魂不在线」,请使用下方 <strong>完整联通诊断</strong> 并对照 <a href="https://q.qq.com/qqbot/openclaw/faq.html" target="_blank" rel="noopener">QQ OpenClaw 常见问题</a>。', '此項只驗證 AppID/Secret 能否向腾訊換 token。<strong>不能</strong>代表 QQ 里機器人已線上;若提示「靈魂不線上」,請使用下方 <strong>完整聯通诊斷</strong> 並对照 <a href="https://q.qq.com/qqbot/openclaw/faq.html" target="_blank" rel="noopener">QQ OpenClaw 常见問題</a>。'),
verifyRequestFailed: _('校验请求失败', 'Verification request failed', '校驗請求失敗'),
installingPlugin: _('安装插件中...', 'Installing plugin...', '安裝外掛中...'),
installPlugin: _('安装插件', 'Install Plugin', '安裝外掛', 'プラグインインストール', '플러그인 설치', 'Cài đặt plugin', 'Instalar plugin', 'Instalar plugin', 'Установить плагин', 'Installer le plugin', 'Plugin installieren'),
pluginInstallFailed: _('插件安装失败', 'Plugin installation failed', '外掛安裝失敗'),
pluginDetected: _('已检测到插件,无需重复安装,本次仅更新配置', 'Plugin detected, no need to reinstall; only updating config', '已檢測到外掛,無需重複安裝,本次僅更新設定'),
writingConfig: _('写入配置...', 'Writing config...', '写入設定...'),
configSaved: _('{platform} 配置已保存Gateway 正在重载', '{platform} config saved, Gateway is reloading', '{platform} 設定已儲存Gateway 正在重載'),
}

View File

@@ -0,0 +1,149 @@
import { _ } from '../helper.js'
export default {
title: _('系统诊断', 'System Diagnostics', '系統诊斷', 'システム診断', '시스템 진단', 'Chẩn đoán hệ thống', 'Diagnóstico del sistema', 'Diagnóstico do sistema', 'Диагностика системы', 'Diagnostic système', 'Systemdiagnose'),
desc: _('全面检测系统状态,快速定位问题', 'Comprehensive system status check, quickly locate issues', '全面檢測系統狀態,快速定位問題', 'WebSocket 接続診断とネットワークデバッグ', 'WebSocket 연결 진단 및 네트워크 디버그', 'Chẩn đoán kết nối WebSocket và gỡ lỗi mạng', 'Diagnóstico de conexión WebSocket y depuración de red', 'Diagnóstico de conexão WebSocket e depuração de rede', 'Диагностика WebSocket и отладка сети', 'Diagnostic de connexion WebSocket et débogage réseau', 'WebSocket-Verbindungsdiagnose und Netzwerk-Debugging'),
sectionAppState: _('应用状态', 'App State', '應用狀態'),
sectionWs: _('WebSocket 连接', 'WebSocket Connection', 'WebSocket 連線'),
sectionNode: _('Node.js 环境', 'Node.js Environment', 'Node.js 環境'),
sectionVersion: _('版本信息', 'Version Info', '版本資訊'),
sectionConfig: _('配置文件', 'Config File', '設定檔案'),
sectionService: _('服务状态', 'Service Status', '服務狀態'),
sectionDevice: _('设备密钥 & 握手签名', 'Device Key & Handshake Signature', '設備金鑰 & 握手簽章'),
sectionDiagnosis: _('诊断建议', 'Diagnostic Suggestions', '诊斷建議'),
sectionDoctorOutput: _('配置诊断输出', 'Config Diagnosis Output', '設定诊斷輸出'),
wsTestTitle: _('WebSocket 连接测试', 'WebSocket Connection Test', 'WebSocket 連線測試'),
btnRefresh: _('刷新状态', 'Refresh Status', '重新整理狀態'),
btnDiagConfig: _('诊断配置', 'Diagnose Config', '诊斷設定'),
btnAutoFix: _('自动修复', 'Auto Fix', '自動修复'),
btnTestWs: _('测试 WebSocket', 'Test WebSocket', '測試 WebSocket'),
btnNetworkLog: _('网络日志', 'Network Log', '網路日誌'),
btnFixPairing: _('一键修复配对', 'Fix Pairing', '一鍵修复配对'),
btnClear: _('清空', 'Clear'),
systemOk: _('系统正常', 'System OK', '系統正常'),
issuesFound: _('发现问题', 'Issues Found', '發現問題'),
allFunctionsOk: _('所有核心功能运行正常', 'All core functions running normally', '所有核心功能執行正常'),
someFunctionsError: _('部分功能异常,请查看下方详情', 'Some functions abnormal, see details below', '部分功能異常,請查看下方詳情'),
openclawReady: _('OpenClaw 就绪', 'OpenClaw Ready', 'OpenClaw 就緒'),
gatewayRunning: _('Gateway 运行中', 'Gateway Running', 'Gateway 執行中'),
connStatus: _('连接状态', 'Connection Status', '連線狀態'),
connected: _('已连接', 'Connected', '已連線'),
notConnected: _('未连接', 'Not Connected', '未連線'),
handshakeStatus: _('握手状态', 'Handshake Status', '握手狀態'),
completed: _('已完成', 'Completed'),
notCompleted: _('未完成', 'Not Completed'),
sessionKey: _('会话密钥', 'Session Key', '對話金鑰'),
installStatus: _('安装状态', 'Install Status', '安裝狀態'),
installed: _('已安装', 'Installed', '已安裝'),
notInstalled: _('未安装', 'Not Installed', '未安裝'),
version: _('版本', 'Version'),
unknownLabel: _('(未知)', '(unknown)'),
currentVersion: _('当前版本', 'Current Version', '目前版本'),
recommendedVersion: _('推荐稳定版', 'Recommended Stable', '推薦穩定版'),
panelVersion: _('面板版本', 'Panel Version'),
latestUpstream: _('最新上游', 'Latest Upstream'),
notDetected: _('(未检测)', '(not detected)', '(未檢測)'),
deviationFromRecommended: _('偏离推荐版', 'Deviation from Recommended', '偏離推薦版'),
versionTooHigh: _('当前版本过高,建议回退', 'Version too high, consider downgrade', '目前版本過高,建議回退'),
versionAligned: _('已对齐', 'Aligned'),
versionNeedSwitch: _('需要切换', 'Needs switch', '需要切換'),
latestAvailable: _('最新上游可用', 'Latest Upstream Available'),
hasUpdate: _('有更新', 'Update available'),
noUpdate: _('无更新', 'No update', '無更新'),
notSet: _('(未设置)', '(not set)', '(未設定)'),
set: _('已设置', 'Set', '已設定'),
running: _('运行中', 'Running', '執行中'),
stopped: _('已停止', 'Stopped'),
none: _('(无)', '(none)', '(無)'),
empty: _('(空)', '(empty)'),
cliInstall: _('CLI 安装', 'CLI Install', 'CLI 安裝'),
runStatus: _('运行状态', 'Run Status', '執行狀態'),
processPid: _('进程 PID', 'Process PID', '處理程序 PID'),
serviceLabel: _('服务标签', 'Service Label', '服務標籤'),
deviceId: _('设备 ID', 'Device ID', '設備 ID'),
publicKey: _('公钥', 'Public Key', '公鑰'),
signTime: _('签名时间', 'Sign Time', '簽章時間'),
deviceKeySuccess: _('设备密钥生成成功', 'Device key generated successfully', '設備金鑰生成成功'),
viewConnectFrame: _('查看完整 Connect Frame', 'View full Connect Frame'),
diagNodeNotInstalled: _('Node.js 未安装,请先安装 Node.js<a href="https://nodejs.org/" target="_blank" rel="noopener">下载地址</a>', 'Node.js not installed. Please install Node.js first (<a href="https://nodejs.org/" target="_blank" rel="noopener">Download</a>)', 'Node.js 未安裝,請先安裝 Node.js<a href="https://nodejs.org/" target="_blank" rel="noopener">下載位址</a>'),
diagConfigMissing: _('配置文件不存在或损坏,请前往「初始设置」页面完成配置', 'Config file missing or corrupted, please go to Setup page to complete configuration', '設定檔案不存在或損壞,請前往「初始設定」頁面完成設定'),
diagCliNotInstalled: _('OpenClaw CLI 未安装,请前往「初始设置」页面安装', 'OpenClaw CLI not installed, please go to Setup page to install', 'OpenClaw CLI 未安裝,請前往「初始設定」頁面安裝'),
diagGatewayNotRunning: _('Gateway 未启动,请前往「服务管理」页面启动服务', 'Gateway not running, please go to Services page to start', 'Gateway 未啟動,請前往「服務管理」頁面啟動服務'),
diagTokenNotSet: _('Gateway token 未设置(本地开发可选,生产环境建议设置)', 'Gateway token not set (optional for local dev, recommended for production)', 'Gateway token 未設定(本地開發可選,生產環境建議設定)'),
diagTokenSecretRef: _('Gateway token 通过环境变量/引用配置SecretRef', 'Gateway token via environment variable/SecretRef', 'Gateway token 通過環境變數/引用設定SecretRef'),
diagDeviceKeyFailed: _('设备密钥生成失败,请检查 Rust 后端日志', 'Device key generation failed, check Rust backend logs', '設備金鑰生成失敗,請檢查 Rust 後端日誌'),
diagWsNotConnected: _('Gateway 运行中但 WebSocket 未连接,常见原因:<strong>origin not allowed</strong>Tauri origin 未在白名单)或端口 {port} 被占用。点击「一键修复配对」可自动修复 origin 问题', 'Gateway running but WebSocket not connected. Common cause: <strong>origin not allowed</strong> (Tauri origin not whitelisted) or port {port} occupied. Click "Fix Pairing" to auto-fix origin issues', 'Gateway 執行中但 WebSocket 未連線,常见原因:<strong>origin not allowed</strong>Tauri origin 未在白名單)或連接埠 {port} 被佔用。点擊「一鍵修复配对」可自動修复 origin 問題'),
diagWsHandshakeFailed: _('WebSocket 已连接但握手未完成,请检查 token 是否正确', 'WebSocket connected but handshake incomplete, check if token is correct', 'WebSocket 已連線但握手未完成,請檢查 token 是否正確'),
diagAllOk: _('所有检测项正常,系统运行良好', 'All checks passed, system running normally', '所有檢測項正常,系統執行良好'),
checkTime: _('检测时间: {time}', 'Check time: {time}', '檢測時間: {time}'),
fixing: _('修复中...', 'Fixing...'),
diagnosing: _('诊断中...', 'Diagnosing...', '诊斷中...'),
runningDoctorFix: _('正在运行 openclaw doctor --fix ...', 'Running openclaw doctor --fix ...', '正在執行 openclaw doctor --fix ...'),
runningDoctor: _('正在运行 openclaw doctor ...', 'Running openclaw doctor ...', '正在執行 openclaw doctor ...'),
noIssues: _('✓ 未发现问题', '✓ No issues found', '✓ 未發現問題'),
diagDone: _('诊断完成', 'Diagnosis complete', '诊斷完成'),
installCorrupt: _('OpenClaw 安装可能已损坏', 'OpenClaw installation may be corrupted', 'OpenClaw 安裝可能已損壞'),
installCorruptHint: _('检测到模块文件缺失,建议前往 <a href="#" data-nav="about" style="color:var(--primary);text-decoration:underline;font-weight:500">关于页面</a> 切换版本或重新安装 OpenClaw CLI。', 'Module files missing. Go to <a href="#" data-nav="about" style="color:var(--primary);text-decoration:underline;font-weight:500">About page</a> to switch version or reinstall OpenClaw CLI.', '檢測到模塊檔案缺失,建議前往 <a href="#" data-nav="about" style="color:var(--primary);text-decoration:underline;font-weight:500">關於頁面</a> 切換版本或重新安裝 OpenClaw CLI。'),
installCorruptToast: _('OpenClaw 安装损坏,建议前往「关于」页重新安装', 'OpenClaw installation corrupted, recommend reinstalling from About page', 'OpenClaw 安裝損壞,建議前往「關於」頁重新安裝'),
configFixDone: _('配置修复完成', 'Config fix complete', '設定修复完成'),
configFixPartial: _('修复完成,部分问题可能需手动处理', 'Fix complete, some issues may need manual handling', '修复完成,部分問題可能需手動處理'),
execFailed: _('执行失败: ', 'Execution failed: ', '執行失敗: '),
cliUnavailable: _('OpenClaw CLI 不可用', 'OpenClaw CLI unavailable'),
cliUnavailableHint: _('请前往 <a href="#" data-nav="about" style="color:var(--primary);text-decoration:underline;font-weight:500">关于页面</a> 安装或重新安装 OpenClaw。', 'Please go to <a href="#" data-nav="about" style="color:var(--primary);text-decoration:underline;font-weight:500">About page</a> to install or reinstall OpenClaw.', '請前往 <a href="#" data-nav="about" style="color:var(--primary);text-decoration:underline;font-weight:500">關於頁面</a> 安裝或重新安裝 OpenClaw。'),
wsTestStart: _('开始 WebSocket 连接测试...', 'Starting WebSocket connection test...', '開始 WebSocket 連線測試...'),
wsAddress: _('连接地址: {url}', 'Address: {url}', '連線位址: {url}'),
wsToken: _('Token: {token}', 'Token: {token}'),
wsConnecting: _('正在连接...', 'Connecting...', '正在連線...', '接続中...', '연결 중...', 'Đang kết nối...', 'Conectando...', 'Conectando...', 'Подключение...', 'Connexion...', 'Verbindung wird hergestellt...'),
wsConnected: _('WebSocket 连接成功', 'WebSocket connected', 'WebSocket 連線成功', '接続済み', '연결됨', 'Đã kết nối', 'Conectado', 'Conectado', 'Подключено', 'Connecté', 'Verbunden'),
wsWaitChallenge: _('等待 Gateway 发送 connect.challenge...', 'Waiting for Gateway connect.challenge...', '等待 Gateway 發送 connect.challenge...'),
wsReceivedMsg: _('收到消息', 'Received message', '收到訊息'),
wsReceivedChallenge: _('收到 challenge, nonce', 'Received challenge, nonce'),
wsGeneratingFrame: _('生成 connect frame...', 'Generating connect frame...'),
wsFrameGenerated: _('Connect frame 生成成功', 'Connect frame generated'),
wsSendingFrame: _('发送 connect frame', 'Sending connect frame', '發送 connect frame'),
wsFrameFailed: _('生成 connect frame 失败', 'Connect frame generation failed', '生成 connect frame 失敗'),
wsHandshakeOk: _('握手成功!', 'Handshake successful!', '', 'ハンドシェイク成功!', '핸드셰이크 성공!'),
wsHandshakeFailed: _('握手失败', 'Handshake failed', '握手失敗', 'ハンドシェイク失敗', '핸드셰이크 실패'),
wsParseFailed: _('解析消息失败', 'Message parse failed', '解析訊息失敗', 'メッセージ解析失敗'),
wsRawData: _('原始数据', 'Raw data', '原始資料', 'Raw データ'),
wsError: _('WebSocket 错误', 'WebSocket error', 'WebSocket 錯誤', 'WebSocket エラー', 'WebSocket 오류', 'Lỗi WebSocket', 'Error WebSocket', 'Erro WebSocket', 'Ошибка WebSocket', 'Erreur WebSocket', 'WebSocket-Fehler'),
wsClosed: _('连接关闭', 'Connection closed', '連線關閉', '接続終了', '연결 종료'),
wsOriginRejected: _('origin not allowed (1008) - Gateway 拒绝了当前应用的 origin', 'origin not allowed (1008) - Gateway rejected current app origin', 'origin not allowed (1008) - Gateway 拒絕了目前應用的 origin', 'origin not allowed (1008) - Gateway が現在のアプリの origin を拒否しました'),
wsOriginFix: _('解决方法:点击「一键修复配对」,将自动将 tauri://localhost 加入白名单并重启 Gateway', 'Solution: Click "Fix Pairing" to auto-add tauri://localhost to whitelist and restart Gateway', '解決方法:点擊「一鍵修复配对」,將自動將 tauri://localhost 加入白名單並重啟 Gateway', '解決方法「ワンクリック修復」をクリックすると、tauri://localhost がホワイトリストに追加され Gateway が再起動されます'),
wsAuthFailed: _('认证失败 (4001) - Token 可能不正确', 'Auth failed (4001) - Token may be incorrect', '認證失敗 (4001) - Token 可能不正確', '認証失敗 (4001) - トークンが正しくない可能性があります'),
wsAbnormalClose: _('异常关闭 (1006) - 可能是网络问题或 Gateway 主动断开', 'Abnormal close (1006) - May be network issue or Gateway disconnect', '異常關閉 (1006) - 可能是網路問題或 Gateway 主動斷開', '異常終了 (1006) - ネットワークの問題か Gateway が切断した可能性があります'),
wsCreateFailed: _('创建 WebSocket 失败', 'WebSocket creation failed', '建立 WebSocket 失敗', 'WebSocket 作成失敗'),
wsConfigReadFailed: _('读取配置失败', 'Config read failed', '讀取設定失敗', '設定の読み込みに失敗'),
networkLogTitle: _('网络请求日志(最近 100 条)', 'Network Request Log (last 100)', '網路請求日誌(最近 100 條)', 'ネットワークリクエストログ(最新 100 件)', '네트워크 요청 로그 (최근 100건)', 'Nhật ký yêu cầu mạng', 'Registro de solicitudes de red', 'Log de solicitações de rede', 'Журнал сетевых запросов', 'Journal des requêtes réseau', 'Netzwerkanfrage-Protokoll'),
noRequests: _('暂无请求记录', 'No request logs', '暫無請求紀錄', 'リクエスト記録なし', '요청 기록 없음', 'Không có yêu cầu', 'Sin solicitudes', 'Sem solicitações', 'Нет запросов', 'Aucune requête', 'Keine Anfragen'),
totalRequests: _('总请求', 'Total Requests', '總請求', '合計リクエスト', '총 요청', 'Tổng yêu cầu', 'Total de solicitudes', 'Total de solicitações', 'Всего запросов', 'Total des requêtes', 'Gesamte Anfragen'),
cacheHit: _('缓存命中', 'Cache Hit', '快取命中', 'キャッシュヒット', '캐시 히트'),
avgDuration: _('平均耗时', 'Avg Duration', '平均耗時', '平均所要時間', '평균 소요 시간'),
colTime: _('时间', 'Time', '時間', '時間', '시간'),
colCommand: _('命令', 'Command', '', 'コマンド', '명령'),
colArgs: _('参数', 'Args', '參數', '引数'),
colDuration: _('耗时', 'Duration', '耗時', '所要時間', '소요 시간'),
colCache: _('缓存', 'Cache', '快取', 'キャッシュ', '캐시'),
fixStarting: _('开始修复配对问题...', 'Starting pairing fix...', '開始修复配对問題...', '修復開始...', '수리 시작...', 'Bắt đầu sửa chữa...', 'Iniciando reparación...', 'Iniciando reparo...', 'Начинаем исправление...', 'Début de la réparation...', 'Reparatur wird gestartet...'),
fixWritingPair: _('正在写入设备配对信息 + Gateway origin 白名单...', 'Writing device pairing info + Gateway origin whitelist...', '正在写入設備配对資訊 + Gateway origin 白名單...', 'デバイスペアリング情報と Gateway origin ホワイトリストを書き込み中...'),
fixOriginAdded: _('已将 tauri://localhost 加入 gateway.controlUi.allowedOrigins', 'Added tauri://localhost to gateway.controlUi.allowedOrigins', '已將 tauri://localhost 加入 gateway.controlUi.allowedOrigins', 'tauri://localhost を gateway.controlUi.allowedOrigins に追加しました'),
fixStoppingGw: _('停止 Gateway 服务...', 'Stopping Gateway service...', '停止 Gateway 服務...', 'Gateway サービスを停止中...'),
fixWaitExit: _('等待进程退出3秒...', 'Waiting for process exit (3s)...', '等待處理程序退出3秒...', 'プロセス終了待ち3秒...'),
fixStartingGw: _('启动 Gateway 服务...', 'Starting Gateway service...', '啟動 Gateway 服務...', 'Gateway サービスを起動中...'),
fixGwStartSent: _('Gateway 启动命令已发送', 'Gateway start command sent', 'Gateway 啟動命令已發送', 'Gateway 起動コマンド送信済み'),
fixWaitReady: _('等待 Gateway 就绪5秒...', 'Waiting for Gateway ready (5s)...', '等待 Gateway 就緒5秒...', 'Gateway 準備待ち5秒...'),
fixCheckStatus: _('检查 Gateway 状态...', 'Checking Gateway status...', '檢查 Gateway 狀態...', 'Gateway ステータス確認中...'),
fixGwStarted: _('Gateway 已启动', 'Gateway started', 'Gateway 已啟動', 'Gateway が起動しました', 'Gateway 시작됨'),
fixGwMaybeStarting: _('Gateway 可能还在启动中,请稍后手动测试', 'Gateway may still be starting, please test manually later', 'Gateway 可能还在啟動中,請稍后手動測試', 'Gateway はまだ起動中の可能性があります。後で手動テストしてください'),
fixTestingWs: _('测试 WebSocket 连接...', 'Testing WebSocket connection...', '測試 WebSocket 連線...', 'WebSocket 接続テスト中...'),
fixReceivedChallenge: _('收到 connect.challenge', 'Received connect.challenge', '', 'connect.challenge を受信'),
fixFrameSent: _('已发送 connect frame', 'Connect frame sent', '已發送 connect frame', 'connect フレーム送信済み'),
fixPairSuccess: _('握手成功!配对问题已修复!', 'Handshake successful! Pairing issue fixed!', '握手成功!配对問題已修复!', 'ハンドシェイク成功!ペアリングの問題が修復されました!', '핸드셰이크 성공! 페어링 문제가 수리되었습니다!'),
fixReconnecting: _('正在重新建立主应用 WebSocket 连接...', 'Re-establishing main app WebSocket connection...', '正在重新建立主應用 WebSocket 連線...', 'メインアプリの WebSocket 接続を再確立中...'),
fixOriginStillRejected: _('原因Gateway 拒绝了当前应用的 origin需要重启 Gateway 再试', 'Reason: Gateway rejected current app origin, need to restart Gateway', '原因Gateway 拒絕了目前應用的 origin需要重啟 Gateway 再試', '原因Gateway が現在のアプリの origin を拒否しました。Gateway の再起動が必要です'),
fixSuggestManualRestart: _('建议:请手动前往「服务管理」页面重启 Gateway', 'Suggestion: Manually restart Gateway from Services page', '建議:請手動前往「服務管理」頁面重啟 Gateway', '「サービス管理」ページで Gateway を手動で再起動してください'),
fixWsConnFailed: _('WebSocket 连接失败,请确认 Gateway 已在运行', 'WebSocket connection failed, please confirm Gateway is running', 'WebSocket 連線失敗,請確認 Gateway 已在執行', 'WebSocket 接続失敗、Gateway が実行中か確認してください'),
fixOriginRejected1008: _('连接被拒绝 (1008) - Gateway 拒绝了当前 origin', 'Connection rejected (1008) - Gateway rejected current origin', '連線被拒絕 (1008) - Gateway 拒絕了目前 origin', '接続拒否 (1008) - Gateway が現在の origin を拒否しました'),
fixRetryHint: _('该问题应已被本次修复流程处理,请再次点击「一键修复配对」', 'This issue should have been fixed, please click "Fix Pairing" again', '該問題應已被本次修复流程處理,請再次点擊「一鍵修复配对」', 'この問題は今回の修復で処理されたはずです。もう一度「ワンクリック修復」をクリックしてください'),
fixFailed: _('修复失败', 'Fix failed', '修复失敗', '修復失敗', '수리 실패', 'Sửa chữa thất bại', 'Reparación fallida', 'Reparo falhou', 'Исправление не удалось', 'Réparation échouée', 'Reparatur fehlgeschlagen'),
}

141
src/locales/modules/chat.js Normal file
View File

@@ -0,0 +1,141 @@
import { _ } from '../helper.js'
export default {
title: _('实时聊天', 'Live Chat', '實時聊天', 'ライブチャット', '실시간 채팅', 'Trò chuyện trực tiếp', 'Chat en vivo', 'Chat ao vivo', 'Живой чат', 'Chat en direct', 'Live-Chat'),
desc: _('与 AI Agent 实时对话', 'Chat with AI Agents in real-time', '與 AI Agent 實時對話', 'Agent とリアルタイムで会話', 'Agent와 실시간 대화', 'Trò chuyện với Agent theo thời gian thực', 'Chatear con el Agent en tiempo real', 'Conversar com o Agent em tempo real', 'Общение с агентом в реальном времени', 'Discuter avec l\'Agent en temps réel', 'Mit dem Agenten in Echtzeit chatten'),
sessionList: _('会话列表', 'Sessions', '對話列表', 'セッションリスト', '세션 목록'),
newSession: _('新建会话', 'New Session', '新建對話', '新しいセッション', '새 세션', 'Phiên mới', 'Nueva sesión', 'Nova sessão', 'Новая сессия', 'Nouvelle session', 'Neue Sitzung'),
chatTitle: _('聊天', 'Chat'),
loadingModels: _('加载模型中...', 'Loading models...', '載入模型中...', 'モデル読み込み中...', '모델 로딩 중...'),
shortcuts: _('快捷指令', 'Shortcuts'),
resetSession: _('重置会话', 'Reset Session', '重置對話'),
inputPlaceholder: _('输入消息Enter 发送,/ 打开指令', 'Type a message, Enter to send, / for commands', '輸入訊息Enter 發送,/ 開啟指令', 'メッセージを入力...', '메시지를 입력하세요...', 'Nhập tin nhắn...', 'Escribe un mensaje...', 'Digite uma mensagem...', 'Введите сообщение...', 'Tapez un message...', 'Nachricht eingeben...'),
uploadImage: _('上传图片', 'Upload Image', '上傳圖片'),
refreshModels: _('刷新模型列表', 'Refresh Models', '重新整理模型列表'),
send: _('发送', 'Send', '發送', '送信', '전송', 'Gửi', 'Enviar', 'Enviar', 'Отправить', 'Envoyer', 'Senden'),
stopGeneration: _('停止生成', 'Stop Generation'),
doubleClickRename: _('双击重命名', 'Double-click to rename', '雙擊重命名'),
delete: _('删除', 'Delete', '刪除'),
messagesCount: _('{count} 条消息', '{count} messages', '{count} 條訊息'),
justNow: _('刚刚', 'just now', '剛剛'),
minutesAgo: _('{n} 分钟前', '{n} min ago', '{n} 分鐘前'),
hoursAgo: _('{n} 小时前', '{n} hr ago', '{n} 小時前'),
daysAgo: _('{n} 天前', '{n} days ago'),
unknown: _('未知', 'Unknown'),
mainSession: _('主会话', 'Main Session', '主對話'),
mainDefault: _('main (默认)', 'main (default)', 'main (預設)'),
newAgent: _('+ 新建 Agent', '+ New Agent'),
sessionName: _('会话名称', 'Session Name', '對話名稱'),
sessionNamePlaceholder: _('例如:翻译助手', 'e.g. Translation Helper'),
enterSessionName: _('请输入会话名称', 'Please enter a session name', '請輸入對話名稱'),
createAgentHint: _('请在 Agent 管理页面创建新 Agent', 'Please create a new Agent in the Agent management page', '請在 Agent 管理頁面建立新 Agent'),
sessionCreated: _('会话已创建', 'Session created', '對話已建立'),
cannotDeleteMain: _('主会话不能删除', 'Cannot delete the main session', '主對話不能刪除'),
confirmDeleteSession: _('确定删除会话「{label}」?', 'Delete session "{label}"?', '確定刪除對話「{label}」?', 'このセッションを削除しますか?'),
sessionDeleted: _('会话已删除', 'Session deleted', '對話已刪除'),
deleteFailed: _('删除失败: ', 'Delete failed: ', '刪除失敗: '),
confirmResetSession: _('确定要重置会话「{label}」吗?\n\n重置后将清空该会话的所有聊天记录此操作不可撤销。', 'Reset session "{label}"?\n\nThis will clear all chat history for this session. This action cannot be undone.', '確定要重置對話「{label}」吗?\n\n重置后將清空該對話的所有聊天紀錄此操作不可撤销。'),
sessionResetDone: _('会话已重置', 'Session has been reset', '對話已重置'),
resetFailed: _('重置失败: ', 'Reset failed: ', '重置失敗: '),
sessionRenamed: _('会话已重命名', 'Session renamed', '對話已重命名'),
gatewayNotReadySend: _('Gateway 未就绪,连接成功后再发送', 'Gateway not ready, will send after connection', 'Gateway 未就緒,連線成功后再發送'),
sendFailed: _('发送失败: ', 'Send failed: ', '發送失敗: ', '送信失敗', '전송 실패'),
usingTool: _('正在使用工具: {name}', 'Using tool: {name}'),
streamTimeout: _('输出超时,已自动结束', 'Output timed out, auto-ended', '輸出逾時,已自動結束'),
generationStopped: _('生成已停止', 'Generation stopped'),
errorPrefix: _('错误: ', 'Error: ', '錯誤: '),
connectionRejected: _('连接被 Gateway 拒绝,请点击「修复并重连」', 'Connection rejected by Gateway, click "Fix & Reconnect"', '連線被 Gateway 拒絕,請点擊「修复並重連」'),
noMessages: _('还没有消息,开始聊天吧', 'No messages yet, start chatting!', '还沒有訊息,開始聊天吧', 'メッセージなし', '메시지 없음', 'Không có tin nhắn', 'Sin mensajes', 'Sem mensagens', 'Нет сообщений', 'Aucun message', 'Keine Nachrichten'),
imageHistoryHint: _('部分历史图片无法显示Gateway 不保留图片原始数据,仅当前会话内可见)', 'Some history images cannot be displayed (Gateway does not retain original image data, only visible in current session)', '部分歷史圖片無法顯示Gateway 不保留圖片原始資料,僅目前對話內可见)'),
loadHistoryFailed: _('加载历史失败: ', 'Failed to load history: ', '載入歷史失敗: '),
toolSuccess: _('成功', 'Success'),
toolFailed: _('失败', 'Failed', '失敗'),
toolParams: _('参数', 'Parameters', '參數'),
toolResult: _('结果', 'Result', '結果'),
noParams: _('无参数', 'No parameters', '無參數'),
noResult: _('无结果', 'No result', '無結果'),
tool: _('工具', 'Tool'),
file: _('文件', 'File', '檔案'),
compacting: _('正在整理上下文Compaction…', 'Compacting context…'),
remaining: _('剩余', 'Remaining', '剩餘'),
connectFailed: _('连接失败', 'Connection failed', '連線失敗'),
fixDoneReconnecting: _('修复完成,正在重连...', 'Fix done, reconnecting...', '修复完成,正在重連...'),
fixing: _('修复中...', 'Fixing...'),
writingConfig: _('正在写入配置...', 'Writing config...', '正在写入設定...'),
fixFailed: _('修复失败: ', 'Fix failed: ', '修复失敗: '),
imageOnly: _('仅支持上传图片', 'Only images are supported', '僅支援上傳圖片'),
readFileFailed: _('读取文件失败', 'Failed to read file', '讀取檔案失敗'),
noSessions: _('暂无会话', 'No sessions', '暫無對話', 'セッションなし', '세션 없음', 'Không có phiên', 'Sin sesiones', 'Sem sessões', 'Нет сессий', 'Aucune session', 'Keine Sitzungen'),
disconnected: _('连接已断开,正在重连...', 'Disconnected, reconnecting...', '連線已斷開,正在重連...', '切断', '연결 끊김', 'Đã ngắt kết nối', 'Desconectado', 'Desconectado', 'Отключено', 'Déconnecté', 'Getrennt'),
gatewayNotReady: _('Gateway 连接未就绪', 'Gateway Connection Not Ready', 'Gateway 連線未就緒'),
connectingGateway: _('正在连接 Gateway...', 'Connecting to Gateway...', '正在連線 Gateway...'),
fixAndReconnect: _('修复并重连', 'Fix & Reconnect', '修复並重連'),
gatewaySettings: _('Gateway 设置', 'Gateway Settings', 'Gateway 設定'),
firstUseHint: _('首次使用?请确保 Gateway 已启动,或点击「修复并重连」自动修复配置', 'First time? Make sure Gateway is running, or click "Fix & Reconnect" to auto-fix', '首次使用?請確保 Gateway 已啟動,或点擊「修复並重連」自動修复設定'),
guideTitle: _('你正在使用「实时聊天」', 'You are using Live Chat', '你正在使用「實時聊天」'),
guideDesc: _('此页面通过 <b>Gateway</b> 连接 OpenClaw 的 AI Agent对话由你部署的 OpenClaw 服务处理。', 'This page connects to your OpenClaw AI Agent via <b>Gateway</b>. Conversations are processed by your deployed OpenClaw service.', '此頁面通過 <b>Gateway</b> 連線 OpenClaw 的 AI Agent對話由你部署的 OpenClaw 服務處理。'),
guideHint: _('如需使用 ClawPanel 内置 AI 助手(独立于 OpenClaw请前往左侧菜单「AI 助手」页面。', 'To use ClawPanel\'s built-in AI Assistant (independent of OpenClaw), go to "AI Assistant" in the left menu.', '如需使用 ClawPanel 內置 AI 助手(獨立於 OpenClaw請前往左側菜單「AI 助手」頁面。'),
guideClose: _('知道了', 'Got it'),
defaultSuffix: _('(默认)', '(default)', '(預設)'),
cmdSession: _('会话', 'Session', '對話'),
cmdModel: _('模型', 'Model'),
cmdThinkMode: _('思考模式', 'Think Mode'),
cmdFastMode: _('快速模式', 'Fast Mode'),
cmdVerbose: _('详细/推理', 'Verbose/Reasoning', '詳細/推理'),
cmdInfo: _('信息', 'Info', '資訊'),
cmdNewSession: _('新建会话', 'New session', '新建對話'),
cmdResetSession: _('重置当前会话', 'Reset current session', '重置目前對話'),
cmdStopGen: _('停止生成', 'Stop generation'),
cmdSwitchModel: _('切换模型(输入模型名)', 'Switch model (enter name)', '切換模型(輸入模型名)'),
cmdListModels: _('查看可用模型', 'List available models'),
cmdModelStatus: _('当前模型状态', 'Current model status', '目前模型狀態'),
cmdThinkOff: _('关闭深度思考', 'Disable deep thinking', '關閉深度思考'),
cmdThinkLow: _('轻度思考', 'Light thinking'),
cmdThinkMedium: _('中度思考', 'Medium thinking'),
cmdThinkHigh: _('深度思考', 'Deep thinking'),
cmdFastToggle: _('切换快速模式(开/关)', 'Toggle fast mode (on/off)', '切換快速模式(開/關)'),
cmdFastOn: _('开启快速模式(低延迟)', 'Enable fast mode (low latency)', '開啟快速模式(低延遲)'),
cmdFastOff: _('关闭快速模式', 'Disable fast mode', '關閉快速模式'),
cmdVerboseOff: _('关闭详细模式', 'Disable verbose mode', '關閉詳細模式'),
cmdVerboseLow: _('低详细度', 'Low verbosity', '低詳細度'),
cmdVerboseHigh: _('高详细度', 'High verbosity', '高詳細度'),
cmdReasoningOff: _('关闭推理模式', 'Disable reasoning mode', '關閉推理模式'),
cmdReasoningLow: _('轻度推理', 'Light reasoning'),
cmdReasoningMedium: _('中度推理', 'Medium reasoning'),
cmdReasoningHigh: _('深度推理', 'Deep reasoning'),
cmdHelp: _('帮助信息', 'Help', '幫助資訊'),
cmdStatus: _('系统状态', 'System status', '系統狀態'),
cmdContext: _('上下文信息', 'Context info', '上下文資訊'),
hostedAgent: _('托管 Agent', 'Hosted Agent'),
hostedBadge: _('托管', 'Hosted'),
taskGoal: _('任务目标', 'Task Goal', '任務目標'),
taskGoalPlaceholder: _('例如:持续优化此仓库代码质量,直到没有可改进的地方', 'e.g. Continuously optimize code quality until no improvements remain', '例如:持續最佳化此倉庫代碼質量,直到沒有可改進的地方'),
hostedHint: _('托管 Agent 会持续引导 OpenClaw 完成此目标。模型使用 <a href="#/assistant" class="hosted-agent-link">AI 助手</a> 的配置。', 'Hosted Agent will continuously guide OpenClaw to complete this goal. Uses <a href="#/assistant" class="hosted-agent-link">AI Assistant</a> model config.', '托管 Agent 會持續引导 OpenClaw 完成此目標。模型使用 <a href="#/assistant" class="hosted-agent-link">AI 助手</a> 的設定。'),
maxReplies: _('最大回复次数', 'Max Replies', '最大回覆次數'),
timerAutoStop: _('定时自动停止', 'Auto-stop Timer', '定時自動停止'),
startHosted: _('启动托管', 'Start Hosted', '啟動托管'),
stopHosted: _('停止托管', 'Stop Hosted'),
ready: _('就绪', 'Ready', '就緒'),
hostedNotEnabled: _('未启用', 'Not Enabled', '未啟用'),
hostedRunning: _('运行中', 'Running', '執行中'),
hostedWaiting: _('等待回复', 'Waiting for Reply', '等待回覆'),
hostedPaused: _('已暂停', 'Paused', '已暫停'),
hostedErrorStatus: _('异常', 'Error', '異常'),
hostedStandby: _('待命', 'Standby'),
hostedStatusError: _('错误: {msg}', 'Error: {msg}', '錯誤: {msg}'),
hostedStatusRunning: _('运行中 · 剩余 {n} 步', 'Running · {n} steps remaining', '執行中 · 剩餘 {n} 步'),
hostedRemaining: _('剩余 {time}', '{time} remaining', '剩餘 {time}'),
enterTaskGoal: _('请输入任务目标', 'Please enter a task goal', '請輸入任務目標'),
hostedGatewayNotReady: _('Gateway 未就绪,暂不启动', 'Gateway not ready, cannot start', 'Gateway 未就緒,暂不啟動'),
hostedStarted: _('托管 Agent 已启动', 'Hosted Agent started', '托管 Agent 已啟動'),
hostedStopped: _('托管 Agent 已停止', 'Hosted Agent stopped'),
hostedAutoStopSignal: _('OpenClaw 回复包含完成信号,自动停止', 'OpenClaw reply contains completion signal, auto-stopping', 'OpenClaw 回覆包含完成信號,自動停止'),
hostedTimerExpired: _('定时 {min} 分钟已到,自动停止', 'Timer expired ({min} min), auto-stopping', '定時 {min} 分鐘已到,自動停止'),
hostedNeedIntervention: _('需要人工介入: {reason}', 'Manual intervention needed: {reason}'),
hostedGwNotReady: _('Gateway 未就绪', 'Gateway not ready', 'Gateway 未就緒'),
hostedErrorThreshold: _('连续错误超过阈值', 'Consecutive errors exceeded threshold', '連續錯誤超過阈值'),
hostedModelNotConfigured: _('托管 Agent 未配置模型(请在 AI 助手页面配置)', 'Hosted Agent model not configured (please configure in AI Assistant page)', '托管 Agent 未設定模型(請在 AI 助手頁面設定)'),
hostedApiError: _('API 错误 {code}', 'API Error {code}', 'API 錯誤 {code}'),
hostedPrefix: _('[托管 Agent] ', '[Hosted Agent] '),
hostedContextSummary: _('[上下文摘要 - 已压缩 {n} 条历史]', '[Context Summary - compressed {n} history entries]', '[上下文摘要 - 已壓縮 {n} 條歷史]'),
}

View File

@@ -0,0 +1,44 @@
import { _ } from '../helper.js'
export default {
save: _('保存', 'Save', '儲存', '保存', '저장', 'Lưu', 'Guardar', 'Salvar', 'Сохранить', 'Enregistrer', 'Speichern'),
cancel: _('取消', 'Cancel', '', 'キャンセル', '취소', 'Hủy', 'Cancelar', 'Cancelar', 'Отмена', 'Annuler', 'Abbrechen'),
confirm: _('确认', 'Confirm', '確認', '確認', '확인', 'Xác nhận', 'Confirmar', 'Confirmar', 'Подтвердить', 'Confirmer', 'Bestätigen'),
delete: _('删除', 'Delete', '刪除', '削除', '삭제', 'Xóa', 'Eliminar', 'Excluir', 'Удалить', 'Supprimer', 'Löschen'),
edit: _('编辑', 'Edit', '編輯', '編集', '편집', 'Chỉnh sửa', 'Editar', 'Editar', 'Редактировать', 'Modifier', 'Bearbeiten'),
add: _('添加', 'Add', '新增', '追加', '추가', 'Thêm', 'Agregar', 'Adicionar', 'Добавить', 'Ajouter', 'Hinzufügen'),
close: _('关闭', 'Close', '關閉', '閉じる', '닫기', 'Đóng', 'Cerrar', 'Fechar', 'Закрыть', 'Fermer', 'Schließen'),
loading: _('加载中...', 'Loading...', '載入中...', '読み込み中...', '로딩 중...', 'Đang tải...', 'Cargando...', 'Carregando...', 'Загрузка...', 'Chargement...', 'Laden...'),
retry: _('重试', 'Retry', '重試', '再試行', '재시도', 'Thử lại', 'Reintentar', 'Tentar novamente', 'Повторить', 'Réessayer', 'Wiederholen'),
copy: _('复制', 'Copy', '複製', 'コピー', '복사', 'Sao chép', 'Copiar', 'Copiar', 'Копировать', 'Copier', 'Kopieren'),
copied: _('已复制', 'Copied', '已複製', 'コピーしました', '복사됨', 'Đã sao chép', 'Copiado', 'Copiado', 'Скопировано', 'Copié', 'Kopiert'),
search: _('搜索', 'Search', '搜尋', '検索', '검색', 'Tìm kiếm', 'Buscar', 'Pesquisar', 'Поиск', 'Rechercher', 'Suchen'),
refresh: _('刷新', 'Refresh', '重新整理', '更新', '새로고침', 'Làm mới', 'Actualizar', 'Atualizar', 'Обновить', 'Actualiser', 'Aktualisieren'),
back: _('返回', 'Back', '', '戻る', '뒤로', 'Quay lại', 'Volver', 'Voltar', 'Назад', 'Retour', 'Zurück'),
submit: _('提交', 'Submit', '', '送信', '제출', 'Gửi', 'Enviar', 'Enviar', 'Отправить', 'Soumettre', 'Absenden'),
reset: _('重置', 'Reset', '', 'リセット', '초기화', 'Đặt lại', 'Restablecer', 'Redefinir', 'Сбросить', 'Réinitialiser', 'Zurücksetzen'),
enabled: _('已启用', 'Enabled', '已啟用', '有効', '활성화됨', 'Đã bật', 'Habilitado', 'Ativado', 'Включено', 'Activé', 'Aktiviert'),
disabled: _('已禁用', 'Disabled', '已停用', '無効', '비활성화됨', 'Đã tắt', 'Deshabilitado', 'Desativado', 'Отключено', 'Désactivé', 'Deaktiviert'),
unknown: _('未知', 'Unknown', '', '不明', '알 수 없음', 'Không rõ', 'Desconocido', 'Desconhecido', 'Неизвестно', 'Inconnu', 'Unbekannt'),
none: _('无', 'None', '無', 'なし', '없음', 'Không', 'Ninguno', 'Nenhum', 'Нет', 'Aucun', 'Keine'),
yes: _('是', 'Yes', '', 'はい', '예', 'Có', 'Sí', 'Sim', 'Да', 'Oui', 'Ja'),
no: _('否', 'No', '', 'いいえ', '아니오', 'Không', '', 'Não', 'Нет', 'Non', 'Nein'),
online: _('在线', 'Online', '線上', 'オンライン', '온라인', 'Trực tuyến', 'En línea', '', 'В сети', 'En ligne'),
offline: _('离线', 'Offline', '離線', 'オフライン', '오프라인', 'Ngoại tuyến', 'Fuera de línea', '', 'Не в сети', 'Hors ligne'),
running: _('运行中', 'Running', '執行中', '実行中', '실행 중', 'Đang chạy', 'Ejecutando', 'Em execução', 'Работает', 'En cours', 'Läuft'),
stopped: _('已停止', 'Stopped', '', '停止', '중지됨', 'Đã dừng', 'Detenido', 'Parado', 'Остановлен', 'Arrêté', 'Gestoppt'),
error: _('错误', 'Error', '錯誤', 'エラー', '오류', 'Lỗi', '', 'Erro', 'Ошибка', 'Erreur', 'Fehler'),
success: _('成功', 'Success', '', '成功', '성공', 'Thành công', 'Éxito', 'Sucesso', 'Успех', 'Succès', 'Erfolg'),
warning: _('警告', 'Warning', '', '警告', '경고', 'Cảnh báo', 'Advertencia', 'Aviso', 'Предупреждение', 'Avertissement', 'Warnung'),
info: _('提示', 'Info', '', '情報', '알림', 'Thông tin', 'Información', 'Informação', 'Информация', 'Information'),
loadFailed: _('加载失败', 'Load failed', '載入失敗', '読み込み失敗', '로드 실패', 'Tải thất bại', 'Error al cargar', 'Falha ao carregar', 'Ошибка загрузки', 'Échec du chargement', 'Laden fehlgeschlagen'),
saveFailed: _('保存失败', 'Save failed', '儲存失敗', '保存失敗', '저장 실패', 'Lưu thất bại', 'Error al guardar', 'Falha ao salvar', 'Ошибка сохранения', 'Échec de la sauvegarde', 'Speichern fehlgeschlagen'),
saveSuccess: _('保存成功', 'Saved successfully', '儲存成功', '保存しました', '저장 완료', 'Lưu thành công', 'Guardado correctamente', 'Salvo com sucesso', 'Сохранено', 'Sauvegardé', 'Erfolgreich gespeichert'),
operationFailed: _('操作失败', 'Operation failed', '操作失敗', '操作失敗', '작업 실패', 'Thao tác thất bại', 'Operación fallida', 'Operação falhou', 'Операция не удалась', 'Opération échouée', 'Vorgang fehlgeschlagen'),
operationSuccess: _('操作成功', 'Operation succeeded', '', '操作成功', '작업 성공', 'Thao tác thành công', 'Operación exitosa', 'Operação bem-sucedida', 'Операция выполнена', 'Opération réussie', 'Vorgang erfolgreich'),
noData: _('暂无数据', 'No data', '暫無資料', 'データなし', '데이터 없음', 'Không có dữ liệu', 'Sin datos', 'Sem dados', 'Нет данных', 'Aucune donnée', 'Keine Daten'),
unit: _('个', '', '個', '個', '개'),
survivalRate: _('存活率', 'Uptime', '', '稼働率', '가동률', 'Tỷ lệ hoạt động', 'Disponibilidad', 'Disponibilidade', 'Доступность', 'Disponibilité', 'Verfügbarkeit'),
settings: _('设置', 'Settings', '設定', '設定', '설정', 'Cài đặt', 'Configuración', 'Configurações', 'Настройки', 'Paramètres', 'Einstellungen'),
update: _('更新', 'Update', '', '更新', '업데이트', 'Cập nhật', 'Actualizar', 'Atualizar', 'Обновить', 'Mettre à jour', 'Aktualisieren'),
}

View File

@@ -0,0 +1,88 @@
import { _ } from '../helper.js'
export default {
title: _('通信与自动化', 'Communication & Automation', '通信與自動化', '通信と自動化', '통신 및 자동화', 'Truyền thông & Tự động hóa', 'Comunicación y Automatización', 'Comunicação e Automação', 'Коммуникации и автоматизация', 'Communication et Automatisation', 'Kommunikation & Automatisierung'),
desc: _('管理 AI 在各消息渠道中的行为方式:如何回复消息、支持哪些命令、如何接收外部通知等', 'Manage how AI behaves in messaging channels: reply style, commands, external notifications, etc.', '管理 AI 在各訊息頻道中的行為方式:如何回覆訊息、支援哪些命令、如何接收外部通知等', '通知チャンネルと自動化ルールの設定', '알림 채널 및 자동화 규칙 설정', 'Cấu hình kênh thông báo và quy tắc tự động', 'Configurar canales de notificación y reglas de automatización', 'Configurar canais de notificação e regras de automação', 'Настройка каналов уведомлений и правил автоматизации', 'Configurer les canaux de notification et les règles d\'automatisation', 'Benachrichtigungskanäle und Automatisierungsregeln konfigurieren'),
tabMessages: _('消息', 'Messages', '訊息'),
tabBroadcast: _('广播', 'Broadcast', '廣播'),
tabCommands: _('命令', 'Commands'),
tabHooks: _('Webhook', 'Webhook'),
tabApprovals: _('执行审批', 'Approvals', '執行審批'),
save: _('保存', 'Save', '儲存', '保存', '저장', 'Lưu', 'Guardar', 'Salvar', 'Сохранить', 'Enregistrer', 'Speichern'),
saving: _('保存中...', 'Saving...', '儲存中...', '保存中...', '저장 중...'),
loadFailed: _('加载配置失败', 'Failed to load config', '載入設定失敗', '読み込み失敗', '로드 실패', 'Tải thất bại', 'Error al cargar', 'Falha ao carregar', 'Ошибка загрузки', 'Échec du chargement', 'Laden fehlgeschlagen'),
configSaved: _('配置已保存,正在重载 Gateway...', 'Config saved, reloading Gateway...', '設定已儲存,正在重載 Gateway...'),
gwReloaded: _('Gateway 已重载', 'Gateway reloaded', 'Gateway 已重載'),
saveFailed: _('保存失败', 'Save failed', '儲存失敗', '保存失敗', '저장 실패', 'Lưu thất bại', 'Error al guardar', 'Falha ao salvar', 'Ошибка сохранения', 'Échec de la sauvegarde', 'Speichern fehlgeschlagen'),
replySettings: _('回复设置', 'Reply Settings', '回覆設定'),
replyPrefix: _('回复前缀', 'Reply Prefix', '回覆前缀'),
replyPrefixPlaceholder: _('如 [{model}] 或 auto', 'e.g. [{model}] or auto'),
replyPrefixHint: _('每条 AI 回复开头自动加的前缀。支持 {model}、{provider}、{thinkingLevel} 等变量。设为 auto 则显示 Agent 名称', 'Auto-prepended prefix for each AI reply. Supports {model}, {provider}, {thinkingLevel} variables. Set to auto for Agent name.', '每條 AI 回覆開頭自動加的前缀。支援 {model}、{provider}、{thinkingLevel} 等變數。設為 auto 則顯示 Agent 名稱'),
ackReaction: _('确认反应 Emoji', 'Ack Reaction Emoji', '確認反應 Emoji'),
ackReactionPlaceholder: _('如 👀 或留空禁用', 'e.g. 👀 or leave empty to disable', '如 👀 或留空停用'),
ackReactionHint: _('收到消息时自动添加的 emoji 反应(确认已收到)', 'Emoji reaction auto-added when a message is received (acknowledgement)', '收到訊息時自動新增的 emoji 反應(確認已收到)'),
ackScope: _('确认反应范围', 'Ack Reaction Scope', '確認反應範圍'),
ackScopeGroupMentions: _('群聊 @提及时', 'Group @mentions', '群聊 @提及時'),
ackScopeGroupAll: _('群聊所有消息', 'All group messages', '群聊所有訊息'),
ackScopeDirect: _('仅私聊', 'Direct messages only', '僅私聊'),
ackScopeAll: _('所有消息', 'All messages', '所有訊息'),
ackScopeOff: _('关闭', 'Off', '關閉'),
removeAckAfterReply: _('回复后移除确认反应', 'Remove ack after reply', '回覆后移除確認反應'),
removeAckAfterReplyHint: _('回复发送成功后自动删除之前的确认 emoji', 'Auto-remove the ack emoji after the reply is sent', '回覆發送成功后自動刪除之前的確認 emoji'),
suppressToolErrors: _('隐藏工具错误', 'Hide tool errors', '隱藏工具錯誤'),
suppressToolErrorsHint: _('不向用户显示 ⚠️ 工具执行错误', 'Don\'t show ⚠️ tool execution errors to users', '不向使用者顯示 ⚠️ 工具執行錯誤'),
statusReactions: _('状态反应 Emoji', 'Status Reaction Emoji', '狀態反應 Emoji'),
enableStatusReactions: _('启用状态反应', 'Enable status reactions', '啟用狀態反應'),
enableStatusReactionsHint: _('在消息渠道中用 emoji 表示 AI 当前状态(思考中、执行工具、完成等)', 'Show AI status via emoji in channels (thinking, executing tools, done, etc.)', '在訊息頻道中用 emoji 表示 AI 目前狀態(思考中、執行工具、完成等)'),
messageQueue: _('消息队列', 'Message Queue', '訊息佇列'),
debounceMs: _('防抖延迟(毫秒)', 'Debounce Delay (ms)', '防抖延遲(毫秒)'),
debounceMsHint: _('合并快速连续消息的等待时间(毫秒),避免 AI 对每条消息逐一回复', 'Wait time to merge rapid consecutive messages (ms), prevents AI from replying to each one', '合並快速連續訊息的等待時間(毫秒),避免 AI 对每條訊息逐一回覆'),
queueCap: _('队列上限', 'Queue Capacity', '佇列上限'),
queueCapHint: _('等待处理的消息队列最大长度', 'Max length of pending message queue', '等待處理的訊息佇列最大長度'),
groupChat: _('群聊设置', 'Group Chat', '群聊設定'),
groupHistoryLimit: _('群聊历史条数', 'Group History Limit', '群聊歷史條數'),
groupHistoryLimitHint: _('群聊中回溯多少条历史消息作为上下文', 'Number of history messages to include as context in group chats', '群聊中回溯多少條歷史訊息作為上下文'),
broadcastStrategy: _('广播策略', 'Broadcast Strategy', '廣播策略'),
broadcastMode: _('广播处理方式', 'Broadcast Mode', '廣播處理方式'),
broadcastParallel: _('并行parallel— 同时发送给所有目标', 'Parallel — send to all targets simultaneously', '並行parallel— 同時發送给所有目標'),
broadcastSequential: _('顺序sequential— 逐个发送,严格有序', 'Sequential — send one by one, strictly ordered', '顺序sequential— 逐個發送,嚴格有序'),
broadcastHint: _('当消息需要广播给多个 Agent 时的处理策略。并行更快,顺序更可控', 'Strategy for broadcasting to multiple Agents. Parallel is faster, sequential is more controlled.', '當訊息需要廣播给多個 Agent 時的處理策略。並行更快,顺序更可控'),
slashCommands: _('斜杠命令', 'Slash Commands'),
cmdText: _('文本命令解析', 'Text Command Parsing'),
cmdTextHint: _('允许通过 / 前缀在聊天中执行命令', 'Allow executing commands via / prefix in chat', '允許通過 / 前缀在聊天中執行命令'),
cmdBash: _('Bash 命令', 'Bash Commands'),
cmdBashHint: _('允许用 ! 前缀或 /bash 在聊天中执行 Shell 命令(危险)', 'Allow ! prefix or /bash to execute shell commands in chat (dangerous)', '允許用 ! 前缀或 /bash 在聊天中執行 Shell 命令(危險)'),
cmdConfig: _('/config 命令', '/config Command'),
cmdConfigHint: _('允许在聊天中查看/修改配置', 'Allow viewing/modifying config in chat', '允許在聊天中查看/修改設定'),
cmdDebug: _('/debug 命令', '/debug Command'),
cmdDebugHint: _('允许在聊天中查看调试信息', 'Allow viewing debug info in chat', '允許在聊天中查看除錯資訊'),
cmdRestart: _('重启命令', 'Restart Command', '重啟命令'),
cmdRestartHint: _('允许通过命令重启 Gateway', 'Allow restarting Gateway via command', '允許通過命令重啟 Gateway'),
nativeCommands: _('原生命令注册', 'Native Command Registration', '原生命令註冊'),
nativeLabel: _('原生命令', 'Native Commands'),
nativeAuto: _('自动', 'Auto', '自動'),
nativeEnabled: _('启用', 'Enabled', '啟用'),
nativeDisabled: _('禁用', 'Disabled', '停用'),
nativeHint: _('在支持的渠道Telegram、Discord自动注册原生命令菜单', 'Auto-register native command menus in supported channels (Telegram, Discord)', '在支援的頻道Telegram、Discord自動註冊原生命令菜單'),
webhookSettings: _('Webhook 设置', 'Webhook Settings', 'Webhook 設定'),
webhookEnabled: _('启用 Webhook', 'Enable Webhook', '啟用 Webhook'),
webhookEnabledHint: _('允许外部服务通过 HTTP 触发 AI 执行', 'Allow external services to trigger AI execution via HTTP', '允許外部服務通過 HTTP 觸發 AI 執行'),
webhookPath: _('Webhook 路径', 'Webhook Path', 'Webhook 路徑'),
webhookPathHint: _('Gateway 上暴露的 Webhook 接收路径', 'Webhook receive path exposed on Gateway', 'Gateway 上暴露的 Webhook 接收路徑'),
webhookToken: _('认证 Token', 'Auth Token', '認證 Token'),
webhookTokenHint: _('外部请求需在 Header 中携带此 Token 才能触发 Webhook', 'External requests must include this token in header to trigger Webhook', '外部請求需在 Header 中携帶此 Token 才能觸發 Webhook'),
webhookSessionKey: _('默认 Session Key', 'Default Session Key', '預設 Session Key'),
webhookSessionKeyHint: _('Webhook 触发的 Agent 会话标识。留空则每次自动生成', 'Session identifier for Webhook-triggered Agent. Leave empty for auto-generated.', 'Webhook 觸發的 Agent 對話標識。留空則每次自動生成'),
webhookMaxBody: _('请求体大小限制(字节)', 'Max Body Size (bytes)', '請求體大小限制(位元組)'),
noLimit: _('默认无限制', '', '預設無限制'),
approvalsTitle: _('执行审批转发', 'Execution Approval Forwarding', '執行審批轉發'),
approvalsDesc: _('当 AI 请求执行命令时,将审批请求转发到消息渠道,方便在手机上审批', 'Forward approval requests to messaging channels when AI requests command execution, for mobile approval', '當 AI 請求執行命令時,將審批請求轉發到訊息頻道,方便在手機上審批'),
approvalsEnabled: _('启用审批转发', 'Enable Approval Forwarding', '啟用審批轉發'),
approvalsEnabledHint: _('将执行审批请求转发到配置的消息渠道', 'Forward execution approval requests to configured channels', '將執行審批請求轉發到設定的訊息頻道'),
approvalsMode: _('转发模式', 'Forward Mode', '轉發模式'),
approvalsModeSession: _('原会话session— 发到发起请求的会话', 'Session — forward to the originating session', '原對話session— 發到發起請求的對話'),
approvalsModeTargets: _('指定目标targets— 发到配置的目标渠道', 'Targets — forward to configured target channels', '指定目標targets— 發到設定的目標頻道'),
approvalsModeBoth: _('两者都发both', 'Both', '兩者都發both'),
approvalsForwardExec: _('转发执行请求', 'Forward Exec Requests', '轉發執行請求'),
approvalsForwardExecHint: _('将 exec 审批请求转发到渠道(默认关闭,低风险场景可开启)', 'Forward exec approval requests to channels (off by default, enable for low-risk scenarios)', '將 exec 審批請求轉發到頻道(預設關閉,低風險場景可開啟)'),
}

View File

@@ -0,0 +1,72 @@
import { _ } from '../helper.js'
export default {
title: _('定时任务', 'Scheduled Tasks', '定時任務', 'スケジュールタスク', '예약 작업', 'Tác vụ định kỳ', 'Tareas programadas', 'Tarefas agendadas', 'Планировщик', 'Tâches planifiées', 'Geplante Aufgaben'),
desc: _('创建计划任务,让 AI 按设定时间自动执行指令', 'Create scheduled tasks to let AI execute commands at set times', '建立計畫任務,讓 AI 按設定時間自動執行指令', 'OpenClaw の定期タスクを管理', 'OpenClaw 정기 작업 관리', 'Quản lý tác vụ định kỳ OpenClaw', 'Gestionar tareas programadas de OpenClaw', 'Gerenciar tarefas agendadas do OpenClaw', 'Управление периодическими задачами OpenClaw', 'Gérer les tâches planifiées OpenClaw', 'OpenClaw-Aufgaben verwalten'),
gwHint: _('定时任务通过 Gateway 管理。请先启动 Gateway 后使用此功能。', 'Scheduled tasks are managed via Gateway. Please start Gateway first.', '定時任務通過 Gateway 管理。請先啟動 Gateway 后使用此功能。'),
goServices: _('服务管理', 'Services', '服務管理'),
newTask: _('+ 创建任务', '+ New Task', '+ 建立任務'),
refresh: _('刷新', 'Refresh', '重新整理'),
totalTasks: _('总任务', 'Total Tasks', '總任務'),
running: _('运行中', 'Running', '執行中', '実行中...', '실행 중...'),
paused: _('已暂停', 'Paused', '已暫停'),
recentFailed: _('近期失败', 'Recent Failures', '近期失敗'),
noTasks: _('暂无定时任务', 'No scheduled tasks', '暫無定時任務', 'タスクなし', '작업 없음', 'Không có tác vụ', 'Sin tareas', 'Sem tarefas', 'Нет задач', 'Aucune tâche', 'Keine Aufgaben'),
noTasksHint: _('点击「+ 创建任务」添加你的第一个计划任务', 'Click "+ New Task" to create your first scheduled task', '点擊「+ 建立任務」新增你的第一個計畫任務'),
statusRunning: _('运行中', 'Running', '執行中'),
statusPaused: _('已暂停', 'Paused', '已暫停'),
triggerSuccess: _('任务已触发执行', 'Task triggered', '任務已觸發執行'),
triggerFailed: _('触发失败', 'Trigger failed', '觸發失敗'),
togglePaused: _('已暂停', 'Paused', '已暫停'),
toggleEnabled: _('已启用', 'Enabled', '已啟用'),
toggleFailed: _('操作失败', 'Operation failed', '操作失敗', '状態切替失敗'),
confirmDelete: _('确定删除任务「{name}」?', 'Delete task "{name}"?', '確定刪除任務「{name}」?', 'タスク「{name}」を削除しますか?', '작업「{name}」을 삭제하시겠습니까?'),
deleted: _('已删除', 'Deleted', '已刪除', 'タスク削除済み', '작업 삭제됨', 'Tác vụ đã xóa', 'Tarea eliminada', 'Tarefa excluída', 'Задача удалена', 'Tâche supprimée', 'Aufgabe gelöscht'),
deleteFailed: _('删除失败', 'Delete failed', '刪除失敗', 'タスク削除失敗', '작업 삭제 실패'),
fetchFailed: _('获取任务列表失败', 'Failed to fetch task list', '取得任務列表失敗'),
gwNotConnected: _('Gateway 未连接,无法管理定时任务。请先启动 Gateway', 'Gateway not connected. Please start Gateway first to manage scheduled tasks', 'Gateway 未連線,無法管理定時任務。請先啟動 Gateway'),
taskName: _('任务名称 *', 'Task Name *', '任務名稱 *', 'タスク名', '작업명', 'Tên tác vụ', 'Nombre de tarea', 'Nome da tarefa', 'Имя задачи', 'Nom de la tâche', 'Aufgabenname'),
taskNamePlaceholder: _('如:每日摘要推送', 'e.g. Daily summary push'),
taskMessage: _('执行指令 *', 'Command *', '執行指令 *'),
taskMessagePlaceholder: _('AI 将在触发时执行这段指令', 'AI will execute this command when triggered', 'AI 將在觸發時執行这段指令'),
taskAgent: _('指定 Agent', 'Agent'),
taskAgentDefault: _('默认 Agent', 'Default Agent', '預設 Agent'),
taskAgentHint: _('不选则使用默认 Agent 执行', 'Uses default Agent if not specified', '不選則使用預設 Agent 執行'),
taskDelivery: _('投递渠道', 'Delivery Channel', '投递頻道'),
taskDeliveryNone: _('无(主会话)', 'None (main session)', '無(主對話)'),
taskDeliveryHint: _('配置了多个消息渠道时必须指定,否则任务会报错', 'Must be specified when multiple messaging channels are configured', '設定了多個訊息頻道時必須指定,否則任務會报錯'),
taskSchedule: _('执行周期', 'Schedule', '執行周期'),
taskSchedulePlaceholder: _('Cron 表达式,如 0 9 * * *', 'Cron expression, e.g. 0 9 * * *', 'Cron 表達式,如 0 9 * * *'),
taskEnableNow: _('创建后立即启用', 'Enable immediately after creation', '建立后立即啟用'),
editTitle: _('编辑任务', 'Edit Task', '編輯任務', 'タスク編集', '작업 편집'),
createTitle: _('创建定时任务', 'Create Scheduled Task', '建立定時任務'),
saveEdit: _('保存修改', 'Save Changes', '儲存修改'),
saveCreate: _('创建', 'Create', '建立'),
saving: _('保存中...', 'Saving...', '儲存中...'),
nameRequired: _('请输入任务名称', 'Please enter a task name', '請輸入任務名稱', 'タスク名を入力してください', '작업명을 입력하세요'),
messageRequired: _('请输入执行指令', 'Please enter a command', '請輸入執行指令'),
scheduleRequired: _('请设置执行周期', 'Please set a schedule', '請設定執行周期'),
updated: _('任务已更新', 'Task updated', '任務已更新', 'タスク更新済み', '작업 업데이트됨'),
created: _('任务已创建', 'Task created', '任務已建立', 'タスク作成済み', '작업 생성됨', 'Tác vụ đã tạo', 'Tarea creada', 'Tarefa criada', 'Задача создана', 'Tâche créée', 'Aufgabe erstellt'),
saveFailed: _('保存失败', 'Save failed', '儲存失敗'),
fixedConfig: _('已自动修复配置(移除无效的 cron.jobs', 'Auto-fixed config (removed invalid cron.jobs)', '已自動修复設定(移除無效的 cron.jobs'),
cronEvery5min: _('每 5 分钟', 'Every 5 min', '每 5 分鐘'),
cronEvery15min: _('每 15 分钟', 'Every 15 min', '每 15 分鐘'),
cronHourly: _('每小时整点', 'Every hour', '每小時整点'),
cronDaily9: _('每天 9:00', 'Daily 9:00'),
cronDaily18: _('每天 18:00', 'Daily 18:00'),
cronMonday9: _('每周一 9:00', 'Mon 9:00'),
cronMonthly1: _('每月 1 号 9:00', '1st of month 9:00', '每月 1 號 9:00'),
unknown: _('未知', 'Unknown'),
unknownPeriod: _('未知周期', 'Unknown schedule'),
everyMinute: _('每分钟', 'Every minute', '每分鐘', '毎分', '매분'),
everyNMin: _('每 {n} 分钟', 'Every {n} min', '每 {n} 分鐘'),
hourlyOnTheHour: _('每小时整点', 'Every hour on the hour', '每小時整点'),
everyNSec: _('每 {n} 秒', 'Every {n} sec'),
everyNHour: _('每 {n} 小时', 'Every {n} hour', '每 {n} 小時'),
oneTime: _('一次性', 'One-time'),
justNow: _('刚刚', 'Just now', '剛剛'),
minutesAgo: _('{n} 分钟前', '{n} min ago', '{n} 分鐘前'),
hoursAgo: _('{n} 小时前', '{n} hr ago', '{n} 小時前'),
daysAgo: _('{n} 天前', '{n} days ago'),
}

View File

@@ -0,0 +1,83 @@
import { _ } from '../helper.js'
export default {
title: _('仪表盘', 'Dashboard', '儀表盤', 'ダッシュボード', '대시보드', 'Bảng điều khiển', 'Panel', 'Painel', 'Панель', 'Tableau de bord'),
desc: _('OpenClaw 运行状态概览', 'OpenClaw runtime status overview', 'OpenClaw 執行狀態概覽', 'OpenClaw 実行状況の概要', 'OpenClaw 실행 상태 개요', 'Tổng quan trạng thái OpenClaw', 'Resumen del estado de OpenClaw', 'Visão geral do estado do OpenClaw', 'Обзор состояния OpenClaw', 'Vue d\'ensemble de l\'état OpenClaw', 'OpenClaw-Statusübersicht'),
gateway: _('Gateway', 'Gateway'),
portDetect: _('端口检测', 'Port detection', '連接埠檢測', 'ポート検出', '포트 감지'),
notStarted: _('未启动', 'Not started', '未啟動', '未起動', '미시작', 'Chưa khởi động', 'No iniciado', 'Não iniciado', 'Не запущен', 'Non démarré', 'Nicht gestartet'),
versionLabel: _('版本', 'Version', '', 'バージョン', '버전', 'Phiên bản', 'Versión', 'Versão', 'Версия'),
versionOfficial: _('官方', 'Official', '', '公式', '공식'),
versionChinese: _('汉化', 'Chinese', '漢化', '中国語版', '중국어판'),
versionUnknown: _('版本信息未获取', 'Version info unavailable', '版本資訊未取得', 'バージョン情報未取得', '버전 정보 없음'),
versionAhead: _('当前版本高于推荐稳定版 {version},可能不稳定', 'Current version is ahead of recommended stable {version}, may be unstable', '目前版本高於推薦穩定版 {version},可能不穩定', '現在のバージョンは推奨安定版 {version} より新しく、不安定な可能性があります', '현재 버전이 권장 안정 버전 {version}보다 높아 불안정할 수 있습니다'),
versionStable: _('稳定版 {version}', 'Stable {version}', '穩定版 {version}', '安定版 {version}', '안정 버전 {version}'),
versionRecommend: _('推荐稳定版 {version}', 'Recommended stable {version}', '推薦穩定版 {version}', '推奨安定版 {version}', '권장 안정 버전 {version}'),
versionLatest: _('最新上游 {version}', 'Latest upstream {version}', '', '最新アップストリーム {version}', '최신 업스트림 {version}'),
agentFleet: _('Agent 舰队', 'Agent Fleet', 'Agent 艦队', 'Agent フリート', 'Agent 함대', 'Đội Agent', 'Flota de Agentes', 'Frota de Agentes', 'Флот агентов', 'Flotte d\'Agents', 'Agent-Flotte'),
defaultAgent: _('默认', 'Default', '預設', 'デフォルト', '기본', 'Mặc định', 'Predeterminado', 'Padrão', 'По умолчанию', 'Par défaut', 'Standard'),
modelPool: _('模型池', 'Model Pool', '', 'モデルプール', '모델 풀', 'Nhóm mô hình', 'Pool de modelos', 'Pool de modelos', 'Пул моделей', 'Pool de modèles', 'Modell-Pool'),
basedOnProviders: _('基于 {count} 个渠道商', 'From {count} providers', '基於 {count} 個頻道商', '{count} プロバイダーから', '{count}개 프로바이더 기반'),
baseServices: _('基础服务', 'Services', '基礎服務', '基本サービス', '기본 서비스', 'Dịch vụ cơ bản', 'Servicios base', 'Serviços base', 'Базовые сервисы', 'Services de base', 'Basisdienste'),
controlUI: _('Control UI', 'Control UI'),
controlUIDesc: _('OpenClaw 原生面板', 'OpenClaw native panel', '', 'OpenClaw ネイティブパネル', 'OpenClaw 네이티브 패널'),
controlUIClick: _('点击打开浏览器', 'Click to open in browser', '点擊開啟瀏覽器', 'ブラウザで開く', '브라우저에서 열기'),
controlUINotRunning: _('Gateway 未运行', 'Gateway not running', 'Gateway 未執行', 'Gateway 未実行', 'Gateway 미실행'),
restartGw: _('重启 Gateway', 'Restart Gateway', '重啟 Gateway', 'Gateway 再起動', 'Gateway 재시작', 'Khởi động lại Gateway', 'Reiniciar Gateway', 'Reiniciar Gateway', 'Перезапустить Gateway', 'Redémarrer Gateway', 'Gateway neustarten'),
checkUpdate: _('检查更新', 'Check Updates', '檢查更新', '更新確認', '업데이트 확인', 'Kiểm tra cập nhật', 'Buscar actualizaciones', 'Verificar atualizações', 'Проверить обновления', 'Vérifier les mises à jour', 'Updates prüfen'),
createBackup: _('创建备份', 'Create Backup', '建立備份', 'バックアップ作成', '백업 생성', 'Tạo bản sao lưu', 'Crear respaldo', 'Criar backup', 'Создать резервную копию', 'Créer une sauvegarde', 'Backup erstellen'),
recentLogs: _('最近日志', 'Recent Logs', '最近日誌', '最近のログ', '최근 로그', 'Nhật ký gần đây', 'Registros recientes', 'Logs recentes', 'Последние записи', 'Journaux récents', 'Aktuelle Protokolle'),
cliPath: _('CLI 路径', 'CLI Path', 'CLI 路徑', 'CLI パス', 'CLI 경로', 'Đường dẫn CLI', 'Ruta CLI', 'Caminho CLI', 'Путь CLI', 'Chemin CLI', 'CLI-Pfad'),
cliSource: _('安装来源', 'Install Source', '安裝來源', 'インストール元', '설치 출처'),
cliSourceStandalone: _('独立安装版', 'Standalone', '獨立安裝版', 'スタンドアロン版', '독립 설치판'),
cliSourceNpmZh: _('npm 汉化版', 'npm (Chinese)', 'npm 漢化版', 'npm 中国語版', 'npm 중국어판'),
cliSourceNpmOfficial: _('npm 官方版', 'npm (Official)', '', 'npm 公式版', 'npm 공식판'),
cliSourceNpmGlobal: _('npm 全局', 'npm (Global)', 'npm 全域', 'npm グローバル', 'npm 전역'),
cliSourceUnknown: _('未知来源', 'Unknown', '未知來源', '不明', '알 수 없음'),
multiInstall: _('检测到多个安装', 'Multiple installations detected', '檢測到多個安裝', '複数のインストールを検出', '여러 설치가 감지됨'),
multiInstallHint: _('在「面板设置」中可选择使用哪个', 'Choose which one to use in Settings', '在「面板設定」中可選擇使用哪個', '設定で使用するものを選択できます', '설정에서 사용할 설치를 선택할 수 있습니다'),
installCount: _('{count} 个安装', '{count} installations', '{count} 個安裝', '{count} インストール', '{count}개 설치'),
retry: _('重试', 'Retry', '重試', '再試行', '재시도', 'Thử lại', 'Reintentar', 'Tentar novamente', 'Повторить', 'Réessayer', 'Wiederholen'),
servicesLoadFail: _('服务状态加载失败', 'Failed to load service status', '服務狀態載入失敗', 'サービス状態の読み込みに失敗', '서비스 상태 로드 실패'),
versionLoadFail: _('版本信息加载失败', 'Failed to load version info', '版本資訊載入失敗', 'バージョン情報の読み込みに失敗', '버전 정보 로드 실패'),
notSet: _('未设置', 'Not set', '未設定', '未設定', '미설정', 'Chưa đặt', 'No configurado', 'Não definido', 'Не задано', 'Non défini', 'Nicht gesetzt'),
port: _('端口', 'Port', '連接埠', 'ポート', '포트', 'Cổng', 'Puerto', 'Porta', 'Порт'),
startBtn: _('启动', 'Start', '啟動', '起動', '시작', 'Khởi động', 'Iniciar', 'Iniciar', 'Запустить', 'Démarrer', 'Starten'),
stopBtn: _('停止', 'Stop', '', '停止', '중지', 'Dừng', 'Detener', 'Parar', 'Остановить', 'Arrêter', 'Stoppen'),
restartBtn: _('重启', 'Restart', '重啟', '再起動', '재시작', 'Khởi động lại', 'Reiniciar', 'Reiniciar', 'Перезапустить', 'Redémarrer', 'Neustarten'),
primaryModel: _('主模型', 'Primary Model', '', 'プライマリモデル', '기본 모델', 'Mô hình chính', 'Modelo principal', 'Modelo principal', 'Основная модель', 'Modèle principal', 'Primäres Modell'),
maxConcurrent: _('并发上限', 'Max concurrent', '並行上限', '最大同時実行数', '최대 동시 실행'),
mcpTools: _('MCP 工具', 'MCP Tools', '', 'MCP ツール', 'MCP 도구'),
mountedExtensions: _('已挂载扩展', 'Mounted extensions', '已掛載擴充', 'マウント済み拡張', '마운트된 확장'),
recentBackup: _('最近备份', 'Recent Backup', '最近備份', '最近のバックアップ', '최근 백업'),
noBackup: _('从无备份', 'No backups', '從無備份', 'バックアップなし', '백업 없음'),
backupCount: _('{count} 个备份文件', '{count} backup files', '{count} 個備份檔案', '{count} バックアップファイル', '{count}개 백업 파일'),
workspaceCount: _('{count} 个独立工作区', '{count} independent workspaces', '{count} 個獨立工作區', '{count} ワークスペース', '{count}개 워크스페이스'),
runtimeVersion: _('运行时版本', 'Runtime Version', '執行時版本', 'ランタイムバージョン', '런타임 버전'),
remaining: _('剩余', 'Remaining', '剩餘', '残り', '남은'),
activeSessions: _('活跃会话', 'Active Sessions', '活躍對話', 'アクティブセッション', '활성 세션'),
defaultModel: _('默认模型', 'Default model', '預設模型', 'デフォルトモデル', '기본 모델'),
context: _('上下文', 'Context', '', 'コンテキスト', '컨텍스트'),
noLogs: _('暂无日志', 'No logs', '暫無日誌', 'ログなし', '로그 없음', 'Không có nhật ký', 'Sin registros', 'Sem logs', 'Нет записей', 'Aucun journal', 'Keine Protokolle'),
openControlUIFail: _('打开 Control UI 失败', 'Failed to open Control UI', '開啟 Control UI 失敗', 'Control UI を開けませんでした', 'Control UI 열기 실패'),
starting: _('启动中...', 'Starting...', '啟動中...', '起動中...', '시작 중...', 'Đang khởi động...', 'Iniciando...', 'Iniciando...', 'Запуск...', 'Démarrage...', 'Wird gestartet...'),
gwStartSent: _('Gateway 启动指令已发送', 'Gateway start command sent', 'Gateway 啟動指令已發送', 'Gateway 起動コマンド送信済み', 'Gateway 시작 명령 전송됨'),
startFail: _('启动失败', 'Start failed', '啟動失敗', '起動失敗', '시작 실패'),
stopping: _('停止中...', 'Stopping...', '', '停止中...', '중지 중...', 'Đang dừng...', 'Deteniendo...', 'Parando...', 'Остановка...', 'Arrêt...', 'Wird gestoppt...'),
gwStopped: _('Gateway 已停止', 'Gateway stopped', '', 'Gateway 停止済み', 'Gateway 중지됨'),
stopFail: _('停止失败', 'Stop failed', '停止失敗', '停止失敗', '중지 실패'),
restarting: _('重启中...', 'Restarting...', '重啟中...', '再起動中...', '재시작 중...', 'Đang khởi động lại...', 'Reiniciando...', 'Reiniciando...', 'Перезапуск...', 'Redémarrage...', 'Wird neugestartet...'),
gwRestartSent: _('Gateway 重启指令已发送', 'Gateway restart command sent', 'Gateway 重啟指令已發送', 'Gateway 再起動コマンド送信済み', 'Gateway 재시작 명령 전송됨'),
restartFail: _('重启失败', 'Restart failed', '重啟失敗', '再起動失敗', '재시작 실패'),
gwRestarted: _('Gateway 已重启 (PID: {pid})', 'Gateway restarted (PID: {pid})', 'Gateway 已重啟 (PID: {pid})', 'Gateway 再起動済み (PID: {pid})', 'Gateway 재시작됨 (PID: {pid})'),
restartTimeout: _('重启超时Gateway 可能仍在启动中', 'Restart timed out, Gateway may still be starting', '重啟逾時Gateway 可能仍在啟動中', '再起動タイムアウト、Gateway はまだ起動中の可能性があります', '재시작 타임아웃, Gateway가 아직 시작 중일 수 있습니다'),
checking: _('检查中...', 'Checking...', '檢查中...', '確認中...', '확인 중...', 'Đang kiểm tra...', 'Verificando...', 'Verificando...', 'Проверка...', 'Vérification...', 'Wird geprüft...'),
versionAheadWarn: _('当前本地版本 {current} 高于推荐稳定版 {recommended},可能存在兼容风险', 'Local version {current} is ahead of recommended stable {recommended}, may have compatibility risks', '目前本地版本 {current} 高於推薦穩定版 {recommended},可能存在相容風險', 'ローカルバージョン {current} は推奨安定版 {recommended} より新しく、互換性リスクがある可能性があります', '로컬 버전 {current}이 권장 안정 버전 {recommended}보다 높아 호환성 위험이 있을 수 있습니다'),
updateAvailable: _('发现推荐稳定版: {version}', 'Recommended stable version available: {version}', '發現推薦穩定版: {version}', '推奨安定版が利用可能: {version}', '권장 안정 버전 사용 가능: {version}'),
alignedWithLatest: _('已对齐推荐稳定版,最新上游为 {version}', 'Aligned with recommended stable, latest upstream is {version}', '已对齐推薦穩定版,最新上游為 {version}', '推奨安定版に一致、最新アップストリームは {version}'),
upToDate: _('已对齐推荐稳定版', 'Aligned with recommended stable version', '已对齐推薦穩定版', '推奨安定版に一致', '권장 안정 버전과 일치', 'Đã cập nhật', 'Actualizado', 'Atualizado', 'Актуально', 'À jour', 'Aktuell'),
checkUpdateFail: _('检查更新失败', 'Update check failed', '檢查更新失敗', '更新確認に失敗', '업데이트 확인 실패'),
backingUp: _('备份中...', 'Backing up...', '備份中...', 'バックアップ中...', '백업 중...', 'Đang sao lưu...', 'Respaldando...', 'Fazendo backup...', 'Резервное копирование...', 'Sauvegarde...', 'Backup wird erstellt...'),
backupDone: _('已备份: {name}', 'Backed up: {name}', '已備份: {name}', 'バックアップ完了: {name}', '백업 완료: {name}'),
backupFail: _('备份失败', 'Backup failed', '備份失敗', 'バックアップ失敗', '백업 실패', 'Sao lưu thất bại', 'Respaldo fallido', 'Falha no backup', 'Ошибка резервного копирования', 'Échec de la sauvegarde', 'Backup fehlgeschlagen'),
}

View File

@@ -0,0 +1,49 @@
import { _ } from '../helper.js'
export default {
title: _('扩展工具', 'Extensions', '擴充工具', '拡張ツール', '확장 도구', 'Công cụ mở rộng', 'Herramientas de extensión', 'Ferramentas de extensão', 'Расширения', 'Outils additionnels', 'Erweiterungstools'),
desc: _('管理 cftunnel 内网穿透和 ClawApp 移动客户端', 'Manage cftunnel tunneling and ClawApp mobile client', '管理 cftunnel 內網穿透和 ClawApp 移動用戶端', 'cftunnel トンネリングと ClawApp モバイルクライアントの管理', 'cftunnel 터널링 및 ClawApp 모바일 클라이언트 관리', 'Quản lý cftunnel và ClawApp', 'Gestionar cftunnel y ClawApp', 'Gerenciar cftunnel e ClawApp', 'Управление cftunnel и ClawApp', 'Gérer cftunnel et ClawApp', 'cftunnel und ClawApp verwalten'),
cftunnelTitle: _('cftunnel 内网穿透', 'cftunnel Tunneling', 'cftunnel 內網穿透', 'cftunnel トンネリング', 'cftunnel 터널링', 'cftunnel', 'cftunnel', 'cftunnel', 'cftunnel', 'cftunnel', 'cftunnel'),
cftunnelDesc: _('通过 Cloudflare Tunnel 将本地服务暴露到公网,无需公网 IP 和端口映射。', 'Expose local services to the internet via Cloudflare Tunnel, no public IP or port mapping needed.', '通過 Cloudflare Tunnel 將本地服務暴露到公網,無需公網 IP 和連接埠映射。', 'Cloudflare Tunnel でローカルサービスを公開。パブリック IP やポートマッピング不要。', 'Cloudflare Tunnel로 로컬 서비스를 공개. 공인 IP나 포트 매핑 불필요.'),
clawappTitle: _('ClawApp 移动客户端', 'ClawApp Mobile Client', 'ClawApp 移動用戶端', 'ClawApp モバイルクライアント', 'ClawApp 모바일 클라이언트', 'ClawApp', 'ClawApp', 'ClawApp', 'ClawApp', 'ClawApp', 'ClawApp'),
clawappDesc: _('H5 移动聊天客户端,通过代理服务端连接 Gateway。支持本地和外网访问。', 'H5 mobile chat client connecting to Gateway via proxy server. Supports local and public access.', 'H5 移動聊天用戶端,通過代理伺服端連線 Gateway。支援本地和外網訪問。', 'H5 モバイルチャットクライアント、プロキシサーバー経由で Gateway に接続。ローカルおよび外部アクセス対応。', 'H5 모바일 채팅 클라이언트, 프록시 서버를 통해 Gateway에 연결.'),
cftunnelNotInstalled: _('cftunnel 未安装', 'cftunnel not installed', 'cftunnel 未安裝', 'cftunnel 未インストール', 'cftunnel 미설치'),
clawappNotInstalled: _('ClawApp 未安装', 'ClawApp not installed', 'ClawApp 未安裝', 'ClawApp 未インストール', 'ClawApp 미설치'),
installBtn: _('一键安装', 'Install', '一鍵安裝', 'ワンクリックインストール', '원클릭 설치', 'Cài đặt nhanh', 'Instalación rápida', 'Instalação rápida', 'Быстрая установка', 'Installation rapide', 'Schnellinstallation'),
viewDocs: _('查看文档', 'View Docs', '查看文件', 'ドキュメント', '문서 보기'),
status: _('状态', 'Status', '狀態', 'ステータス', '상태', 'Trạng thái', 'Estado', '', 'Статус', 'Statut'),
running: _('运行中', 'Running', '執行中', '実行中', '실행 중', 'Đang chạy', 'Ejecutando', 'Em execução', 'Работает', 'En cours', 'Läuft'),
stopped: _('已停止', 'Stopped', '', '停止', '중지됨', 'Đã dừng', 'Detenido', 'Parado', 'Остановлен', 'Arrêté', 'Gestoppt'),
version: _('版本', 'Version', '', 'バージョン', '버전', 'Phiên bản', 'Versión', 'Versão', 'Версия'),
unknown: _('未知', 'Unknown', '', '不明', '알 수 없음'),
routes: _('条路由', 'routes', '條路由', 'ルート', '라우트'),
noRoutes: _('暂无路由', 'No routes', '暫無路由', 'ルートなし', '라우트 없음'),
active: _('活跃', 'Active', '活躍', 'アクティブ'),
localService: _('本地服务', 'Local service', '本地服務', 'ローカルサービス'),
startTunnel: _('启动隧道', 'Start Tunnel', '啟動隧道', 'トンネル開始', '터널 시작', 'Bắt đầu tunnel', 'Iniciar túnel', 'Iniciar túnel', 'Запустить туннель', 'Démarrer le tunnel', 'Tunnel starten'),
stopTunnel: _('停止隧道', 'Stop Tunnel', '', 'トンネル停止', '터널 중지', 'Dừng tunnel', 'Detener túnel', 'Parar túnel', 'Остановить туннель', 'Arrêter le tunnel', 'Tunnel stoppen'),
viewLogs: _('查看日志', 'View Logs', '查看日誌', 'ログ表示', '로그 보기'),
refresh: _('刷新', 'Refresh', '重新整理', '更新', '새로고침'),
port: _('端口', 'Port', '連接埠', 'ポート', '포트'),
accessUrl: _('访问地址', 'Access URL', '訪問位址', 'アクセス URL', '접속 URL'),
publicUrl: _('外网', 'Public', '外網', 'パブリック', '공개'),
openClawapp: _('打开 ClawApp', 'Open ClawApp', '開啟 ClawApp', 'ClawApp を開く', 'ClawApp 열기'),
openPublicUrl: _('打开外网地址', 'Open Public URL', '開啟外網位址', 'パブリック URL を開く'),
start: _('启动', 'Start', '啟動', '起動', '시작', 'Khởi động', 'Iniciar', 'Iniciar', 'Запустить', 'Démarrer', 'Starten'),
stop: _('停止', 'Stop', '', '停止', '중지', 'Dừng', 'Detener', 'Parar', 'Остановить', 'Arrêter', 'Stoppen'),
tunnelActionDone: _('隧道已{action}', 'Tunnel {action}d', '', 'トンネル{action}済み'),
tunnelActionFail: _('{action}失败', '{action} failed', '{action}失敗', '{action}失敗'),
recentLogs: _('最近日志', 'Recent Logs', '最近日誌', '最近のログ'),
collapse: _('收起', 'Collapse', '', '折りたたむ'),
noLogs: _('暂无日志', 'No logs', '暫無日誌', 'ログなし'),
readLogsFailed: _('读取日志失败', 'Failed to read logs', '讀取日誌失敗', 'ログの読み込みに失敗'),
preparing: _('准备安装...', 'Preparing...', '準備安裝...', 'インストール準備中...'),
installing: _('安装中...', 'Installing...', '安裝中...', 'インストール中...', '설치 중...', 'Đang cài đặt...', 'Instalando...', 'Instalando...', 'Установка...', 'Installation...', 'Wird installiert...'),
installDone: _('安装完成', 'Installation complete', '安裝完成', 'インストール完了', '설치 완료', 'Cài đặt hoàn tất', 'Instalación completada', 'Instalação concluída', 'Установка завершена', 'Installation terminée', 'Installation abgeschlossen'),
installSuccess: _('{name} 安装成功', '{name} installed successfully', '{name} 安裝成功', '{name} インストール成功', '{name} 설치 성공'),
installFailed: _('安装失败', 'Installation failed', '安裝失敗', 'インストール失敗', '설치 실패', 'Cài đặt thất bại', 'Instalación fallida', 'Instalação falhou', 'Ошибка установки', 'Échec de l\'installation', 'Installation fehlgeschlagen'),
installFailedTitle: _('安装 {name} 失败', 'Failed to install {name}', '安裝 {name} 失敗', '{name} のインストールに失敗'),
installScene: _('安装 {name}', 'Installing {name}', '安裝 {name}', '{name} のインストール'),
error: _('错误', 'Error', '錯誤', 'エラー', '오류'),
webModeNoLogs: _('Web 模式:安装日志不可用,请等待完成...', 'Web mode: install logs unavailable, please wait...', 'Web 模式:安裝日誌不可用,請等待完成...', 'Web モード:インストールログは利用できません。完了をお待ちください...'),
}

View File

@@ -0,0 +1,55 @@
import { _ } from '../helper.js'
export default {
title: _('Gateway 配置', 'Gateway Config', 'Gateway 設定', 'Gateway', 'Gateway', 'Gateway', 'Gateway', 'Gateway', 'Gateway', 'Gateway', 'Gateway'),
desc: _('Gateway 是 AI 模型的统一入口,所有应用通过它来调用模型服务', 'Gateway is the unified entry for AI models. All apps call model services through it.', 'Gateway 是 AI 模型的統一入口,所有應用通過它來呼叫模型服務', 'OpenClaw Gateway サービスの設定と管理', 'OpenClaw Gateway 서비스 설정 및 관리', 'Cấu hình và quản lý Gateway', 'Configurar y gestionar Gateway', 'Configurar e gerenciar Gateway', 'Настройка и управление Gateway', 'Configurer et gérer Gateway', 'Gateway konfigurieren und verwalten'),
saveApply: _('保存并生效', 'Save & Apply', '儲存並生效'),
saveHint: _('修改后点击保存Gateway 会自动重载', 'Click save after changes, Gateway will auto-reload', '修改后点擊儲存Gateway 會自動重載'),
saving: _('保存中...', 'Saving...', '儲存中...', '保存中...', '저장 중...'),
loadFailed: _('加载配置失败', 'Failed to load config', '載入設定失敗'),
portTitle: _('服务端口', 'Service Port', '伺服連接埠'),
portLabel: _('端口号', 'Port', '連接埠號'),
portHint: _('应用通过这个端口连接 Gateway默认 18789一般不需要改', 'Apps connect to Gateway via this port. Default 18789, usually no need to change.', '應用通過这個連接埠連線 Gateway預設 18789一般不需要改'),
accessTitle: _('谁能访问', 'Access Control', '誰能訪問'),
localOnly: _('仅本机使用', 'Local Only', '僅本機使用'),
localOnlyDesc: _('只有这台电脑上的应用能访问,最安全', 'Only apps on this machine can access, most secure', '只有这台電腦上的應用能訪問,最安全'),
lanShare: _('局域网共享', 'LAN Sharing', '局域網共用'),
lanShareDesc: _('同一网络下的手机、平板等设备也能用', 'Phones, tablets and other devices on the same network can also use it', '同一網路下的手機、平板等設備也能用'),
authTitle: _('安全认证', 'Authentication', '安全認證'),
authMode: _('认证方式', 'Auth Mode', '認證方式', '認証モード', '인증 모드'),
authToken: _('Token 密钥', 'Token', 'Token 金鑰', 'トークン認証'),
authTokenDesc: _('标准认证方式,适合本地和局域网使用', 'Standard auth, suitable for local and LAN use', '標準認證方式,適合本地和局域網使用'),
authPassword: _('密码认证', 'Password', '密碼認證', 'パスワード認証'),
authPasswordDesc: _('Tailscale Funnel 等外网暴露场景必须使用此模式', 'Required for Tailscale Funnel or other public exposure scenarios', 'Tailscale Funnel 等外網暴露場景必須使用此模式'),
tokenLabel: _('访问密钥Token', 'Access Token', '訪問金鑰Token'),
tokenPlaceholder: _('不设置则任何人都能调用', 'Leave empty for no auth', '不設定則任何人都能呼叫'),
tokenHintRef: _('当前 Token 通过环境变量/引用配置,如需改为明文请清空后输入', 'Current token is configured via env variable/reference. Clear to enter plaintext.', '目前 Token 通過環境變數/引用設定,如需改為明文請清空后輸入'),
tokenHintNormal: _('设置后,应用调用时需要带上这个密钥才能通过。如果选了「局域网共享」,强烈建议设置', 'Apps must include this token to authenticate. Strongly recommended if LAN sharing is enabled.', '設定后,應用呼叫時需要帶上这個金鑰才能通過。如果選了「局域網共用」,强烈建議設定'),
passwordLabel: _('密码', 'Password', '密碼'),
passwordPlaceholder: _('设置 Gateway 访问密码', 'Set Gateway access password', '設定 Gateway 訪問密碼'),
passwordHint: _('通过 Tailscale Funnel 暴露 Gateway 时,必须使用密码认证模式', 'Password auth is required when exposing Gateway via Tailscale Funnel', '通過 Tailscale Funnel 暴露 Gateway 時,必須使用密碼認證模式'),
show: _('显示', 'Show', '顯示'),
hide: _('隐藏', 'Hide', '隱藏'),
toolsTitle: _('Agent 工具权限', 'Agent Tool Permissions', 'Agent 工具權限'),
toolsPermission: _('工具调用权限', 'Tool Access', '工具呼叫權限'),
toolsFull: _('完整权限', 'Full Access', '完整權限'),
toolsFullDesc: _('Agent 可使用所有工具(推荐)', 'Agent can use all tools (recommended)', 'Agent 可使用所有工具(推薦)'),
toolsLimited: _('受限模式', 'Limited Mode'),
toolsLimitedDesc: _('仅允许安全工具,禁用文件/命令操作', 'Only safe tools allowed, file/command ops disabled', '僅允許安全工具,停用檔案/命令操作'),
toolsNone: _('禁用工具', 'Disabled', '停用工具'),
toolsNoneDesc: _('Agent 只能对话,不能调用任何工具', 'Agent can only chat, cannot use any tools', 'Agent 只能對話,不能呼叫任何工具'),
sessionsLabel: _('会话可见性', 'Session Visibility', '對話可见性'),
sessionsAll: _('所有会话可见', 'All sessions visible', '所有對話可见'),
sessionsOwn: _('仅自己的会话', 'Own sessions only', '僅自己的對話'),
sessionsNone: _('不可见', 'Not visible'),
sessionsHint: _('控制 Agent 是否能查看其他会话的上下文', 'Controls whether Agent can see context from other sessions', '控制 Agent 是否能查看其他對話的上下文'),
advancedToggle: _('高级选项', 'Advanced Options', '高级選項'),
tailscaleTitle: _('Tailscale 组网', 'Tailscale Network', 'Tailscale 組網'),
tailscaleLabel: _('Tailscale 地址', 'Tailscale Address', 'Tailscale 位址'),
tailscalePlaceholder: _('例如 100.x.x.x:18789', 'e.g. 100.x.x.x:18789'),
tailscaleHint: _('如果你用 Tailscale 虚拟局域网,填上地址后远程设备就能通过它访问 Gateway。不用可以留空', 'If using Tailscale VPN, fill in the address so remote devices can access Gateway through it. Leave empty if not used.', '如果你用 Tailscale 虛擬局域網,填上位址后遠程設備就能通過它訪問 Gateway。不用可以留空'),
configSaved: _('配置已保存,正在重载 Gateway...', 'Config saved, reloading Gateway...', '設定已儲存,正在重載 Gateway...'),
reloaded: _('Gateway 已重载,新配置已生效', 'Gateway reloaded, new config is active', 'Gateway 已重載,新設定已生效'),
savedButReloadFailed: _('配置已保存,但重载失败', 'Config saved, but reload failed', '設定已儲存,但重載失敗'),
saveFailed: _('保存失败', 'Save failed', '儲存失敗', '保存失敗', '저장 실패', 'Lưu thất bại', 'Error al guardar', 'Falha ao salvar', 'Ошибка сохранения', 'Échec de la sauvegarde', 'Speichern fehlgeschlagen'),
}

View File

@@ -0,0 +1,22 @@
import { _ } from '../helper.js'
export default {
local: _('本机', 'Local', '本機', 'ローカル', '로컬', 'Cục bộ', '', '', 'Локальный', '', 'Lokal'),
remote: _('远程', 'Remote', '遠程', 'リモート', '원격', 'Từ xa', 'Remoto', 'Remoto', 'Удалённый', 'Distant'),
docker: _('Docker', 'Docker'),
switchHint: _('切换后模型配置、Agent 等页面将管理对应实例', 'After switching, Models, Agents and other pages will manage the selected instance', '切換后模型設定、Agent 等頁面將管理对應執行個體', '切り替え後、モデル設定や Agent などのページは選択したインスタンスを管理します', '전환 후 모델 설정, Agent 등의 페이지에서 해당 인스턴스를 관리합니다'),
addInstance: _('添加实例', 'Add Instance', '新增執行個體', 'インスタンス追加', '인스턴스 추가', 'Thêm instance', 'Agregar instancia', 'Adicionar instância', 'Добавить экземпляр', 'Ajouter une instance', 'Instanz hinzufügen'),
addRemote: _('添加远程实例', 'Add Remote Instance', '新增遠程執行個體', 'リモートインスタンス追加', '원격 인스턴스 추가', 'Thêm instance từ xa', 'Agregar instancia remota', 'Adicionar instância remota', 'Добавить удалённый', 'Ajouter une instance distante', 'Remote-Instanz hinzufügen'),
namePlaceholder: _('远程服务器', 'Remote Server', '遠程伺服器', 'リモートサーバー', '원격 서버'),
endpointPlaceholder: _('http://192.168.1.100:1420', 'http://192.168.1.100:1420'),
nameLabel: _('名称', 'Name', '名稱', '名前', '이름', 'Tên', 'Nombre', 'Nome', 'Имя', 'Nom'),
endpointLabel: _('面板地址', 'Panel Address', '面板位址', 'パネルアドレス', '패널 주소', 'Địa chỉ panel', 'Dirección del panel', 'Endereço do painel', 'Адрес панели', 'Adresse du panneau', 'Panel-Adresse'),
gwPortLabel: _('Gateway 端口(可选)', 'Gateway Port (optional)', 'Gateway 連接埠(可選)', 'Gateway ポート(任意)', 'Gateway 포트 (선택)'),
nameRequired: _('请填写名称和面板地址', 'Please fill in name and endpoint', '請填写名稱和面板位址', '名前とパネルアドレスを入力してください', '이름과 패널 주소를 입력하세요'),
endpointExists: _('该端点已存在', 'This endpoint already exists', '該端点已存在', 'このエンドポイントは既に存在します', '이 엔드포인트는 이미 존재합니다'),
adding: _('添加中...', 'Adding...', '新增中...', '追加中...', '추가 중...', 'Đang thêm...', 'Agregando...', 'Adicionando...', 'Добавление...', 'Ajout...', 'Wird hinzugefügt...'),
switchedTo: _('已切换到 {name} — 模型配置、Agent 等将管理该实例', 'Switched to {name} — Models, Agents, etc. will manage this instance', '已切換到 {name} — 模型設定、Agent 等將管理該執行個體', '{name} に切り替えました', '{name}(으)로 전환됨'),
current: _('当前', 'Active', '目前', '現在', '현재', 'Hiện tại', 'Actual', 'Atual', 'Текущий', 'Actuel', 'Aktuell'),
remoteHint: _('远程服务器需要运行 ClawPanel (serve.js)。', 'The remote server must be running ClawPanel (serve.js).', '遠程伺服器需要執行 ClawPanel (serve.js)。', 'リモートサーバーで ClawPanel (serve.js) が実行されている必要があります。', '원격 서버에서 ClawPanel (serve.js)이 실행 중이어야 합니다.'),
example: _('示例', 'Example', '', '例', '예시'),
}

View File

@@ -0,0 +1,19 @@
import { _ } from '../helper.js'
export default {
title: _('日志查看', 'Logs', '日誌查看', 'ログ', '로그', 'Nhật ký', 'Registros', '', 'Журналы', 'Journaux', 'Protokolle'),
desc: _('查看 OpenClaw 各服务日志', 'View OpenClaw service logs', '查看 OpenClaw 各服務日誌', 'OpenClaw サービスログを表示', 'OpenClaw 서비스 로그 보기', 'Xem nhật ký dịch vụ OpenClaw', 'Ver registros del servicio OpenClaw', 'Ver logs do serviço OpenClaw', 'Просмотр журналов OpenClaw', 'Voir les journaux OpenClaw', 'OpenClaw-Protokolle anzeigen'),
tabGateway: _('Gateway 日志', 'Gateway Logs', 'Gateway 日誌', 'Gateway ログ', 'Gateway 로그', 'Gateway', 'Gateway', 'Gateway', 'Gateway', 'Gateway', 'Gateway'),
tabGatewayErr: _('Gateway 错误', 'Gateway Errors', 'Gateway 錯誤', 'Gateway エラー', 'Gateway 오류', 'Lỗi Gateway', 'Errores Gateway', 'Erros Gateway', 'Ошибки Gateway', 'Erreurs Gateway', 'Gateway-Fehler'),
tabGuardian: _('守护进程', 'Guardian', '守护處理程序', 'ガーディアン', '가디언'),
tabBackup: _('备份日志', 'Backup Logs', '備份日誌', 'バックアップログ', '백업 로그', 'Sao lưu', 'Respaldo', 'Backup', 'Резервное копирование', 'Sauvegarde', 'Backup'),
tabAudit: _('审计日志', 'Audit Logs', '審計日誌', '監査ログ', '감사 로그', 'Kiểm toán', 'Auditoría', 'Auditoria', 'Аудит', 'Audit', 'Audit'),
searchPlaceholder: _('搜索日志...', 'Search logs...', '搜尋日誌...', 'ログを検索...', '로그 검색...', 'Tìm kiếm...', 'Buscar...', 'Pesquisar...', 'Поиск...', 'Rechercher...', 'Suchen...'),
refresh: _('刷新', 'Refresh', '重新整理', '更新', '새로고침', 'Làm mới', 'Actualizar', 'Atualizar', 'Обновить', 'Actualiser', 'Aktualisieren'),
autoScroll: _('自动滚动', 'Auto scroll', '自動滚動', '自動スクロール', '자동 스크롤', 'Tự động cuộn', 'Auto-desplazar', 'Rolagem auto', 'Автопрокрутка', 'Défilement auto', 'Auto-Scrollen'),
loading: _('加载日志中...', 'Loading logs...', '載入日誌中...', 'ログ読み込み中...', '로그 로딩 중...', 'Đang tải...', 'Cargando...', 'Carregando...', 'Загрузка...', 'Chargement...', 'Laden...'),
empty: _('暂无日志', 'No logs', '暫無日誌', 'ログなし', '로그 없음', 'Không có nhật ký', 'Sin registros', 'Sem logs', 'Нет записей', 'Aucun journal', 'Keine Protokolle'),
loadFailed: _('加载日志失败', 'Failed to load logs', '載入日誌失敗', 'ログの読み込みに失敗', '로그 로드 실패', 'Tải thất bại', 'Error al cargar', 'Falha ao carregar', 'Ошибка загрузки', 'Échec du chargement', 'Laden fehlgeschlagen'),
noResults: _('未找到匹配结果', 'No matching results', '未找到匹配結果', '一致する結果なし', '일치하는 결과 없음', 'Không có kết quả', 'Sin resultados', 'Sem resultados', 'Ничего не найдено', 'Aucun résultat', 'Keine Ergebnisse'),
searchFailed: _('搜索失败', 'Search failed', '搜尋失敗', '検索失敗', '검색 실패', 'Tìm kiếm thất bại', 'Búsqueda fallida', 'Pesquisa falhou', 'Ошибка поиска', 'Échec de la recherche', 'Suche fehlgeschlagen'),
}

View File

@@ -0,0 +1,42 @@
import { _ } from '../helper.js'
export default {
title: _('记忆文件', 'Memory Files', '記憶檔案', 'メモリ', '메모리', 'Bộ nhớ', 'Memoria', 'Memória', 'Память', 'Mémoire', 'Speicher'),
agentLabel: _('Agent:', 'Agent:'),
newFile: _('+ 新建', '+ New'),
deleteFile: _('删除', 'Delete', '刪除'),
exportZip: _('打包下载全部', 'Export All as ZIP', '打包下載全部'),
selectFile: _('选择文件查看', 'Select a file to view', '選擇檔案查看'),
download: _('下载', 'Download', '下載', 'ダウンロード', '다운로드', 'Tải xuống', 'Descargar', 'Baixar', 'Скачать', 'Télécharger', 'Herunterladen'),
preview: _('预览', 'Preview', '預覽'),
save: _('保存', 'Save', '儲存'),
edit: _('编辑', 'Edit', '編輯'),
editorPlaceholder: _('选择左侧文件进行编辑...', 'Select a file on the left to edit...', '選擇左側檔案進行編輯...'),
catMemory: _('工作记忆', 'Working Memory', '工作記憶'),
catMemoryDesc: _('当前活跃的工作上下文、决策记录和进度追踪', 'Active working context, decision records and progress tracking', '目前活躍的工作上下文、決策紀錄和進度追踪'),
catArchive: _('记忆归档', 'Memory Archive', '記憶歸檔'),
catArchiveDesc: _('已归档的历史记忆文件,按时间周期整理', 'Archived historical memory files, organized by time period', '已歸檔的歷史記憶檔案,按時間周期整理'),
catCore: _('核心文件', 'Core Files', '核心檔案'),
catCoreDesc: _('Agent 核心配置文件,如 AGENTS.md、CLAUDE.md 等', 'Agent core configuration files like AGENTS.md, CLAUDE.md, etc.', 'Agent 核心設定檔案,如 AGENTS.md、CLAUDE.md 等'),
newFileTitle: _('新建记忆文件', 'New Memory File', '新建記憶檔案'),
newFileLabel: _('文件名', 'Filename', '檔案名'),
newFilePlaceholder: _('如 notes.md', 'e.g. notes.md'),
newFileHint: _('建议使用 .md 格式,文件将保存到当前分类目录下', 'Recommended .md format. File will be saved to the current category directory', '建議使用 .md 格式,檔案將儲存到目前分類目錄下'),
created: _('已创建 {name}', 'Created {name}', '已建立 {name}'),
createFailed: _('创建失败', 'Failed to create', '建立失敗'),
confirmDelete: _('确定删除 {name}', 'Delete {name}?', '確定刪除 {name}', 'メモリファイル「{name}」を削除しますか?', '메모리 파일「{name}」을 삭제하시겠습니까?'),
deleted: _('已删除 {name}', 'Deleted {name}', '已刪除 {name}', '削除済み', '삭제됨', 'Đã xóa', 'Eliminado', 'Excluído', 'Удалено', 'Supprimé', 'Gelöscht'),
deleteFailed: _('删除失败', 'Failed to delete', '刪除失敗', '削除失敗', '삭제 실패', 'Xóa thất bại', 'Error al eliminar', 'Falha ao excluir', 'Ошибка удаления', 'Échec de la suppression', 'Löschen fehlgeschlagen'),
noFiles: _('暂无文件', 'No files', '暫無檔案', 'メモリファイルなし', '메모리 파일 없음', 'Không có tệp', 'Sin archivos', 'Sem arquivos', 'Нет файлов', 'Aucun fichier', 'Keine Dateien'),
loadFailed: _('加载失败', 'Load failed', '載入失敗', 'メモリファイルの読み込みに失敗', '메모리 파일 로드 실패', 'Tải thất bại', 'Error al cargar', 'Falha ao carregar', 'Ошибка загрузки', 'Échec du chargement', 'Laden fehlgeschlagen'),
loadListFailed: _('加载文件列表失败', 'Failed to load file list', '載入檔案列表失敗'),
loading: _('加载中...', 'Loading...', '載入中...'),
readFailed: _('读取失败', 'Read failed', '讀取失敗'),
readFileFailed: _('读取文件失败', 'Failed to read file', '讀取檔案失敗'),
fileSaved: _('文件已保存', 'File saved', '檔案已儲存'),
saveFailed: _('保存失败', 'Save failed', '儲存失敗'),
downloaded: _('已下载 {name}', 'Downloaded {name}', '已下載 {name}'),
downloadFailed: _('下载失败', 'Download failed', '下載失敗'),
exported: _('已导出: {label} → {path}', 'Exported: {label} → {path}'),
exportFailed: _('打包下载失败', 'Export failed', '打包下載失敗'),
}

View File

@@ -0,0 +1,7 @@
import { _ } from '../helper.js'
export default {
confirmTitle: _('确认操作', 'Confirm', '確認操作', '操作の確認', '작업 확인', 'Xác nhận', 'Confirmar', 'Confirmar', 'Подтвердите', 'Confirmer', 'Bestätigen'),
confirmOk: _('确认', 'OK', '確認', '', '확인', 'Đồng ý', 'Aceptar', '', 'ОК'),
confirmCancel: _('取消', 'Cancel', '', 'キャンセル', '취소', 'Hủy', 'Cancelar', 'Cancelar', 'Отмена', 'Annuler', 'Abbrechen'),
}

View File

@@ -0,0 +1,156 @@
import { _ } from '../helper.js'
export default {
title: _('模型配置', 'Models', '模型設定', 'モデル設定', '모델 설정', 'Cấu hình mô hình', 'Configuración de modelos', 'Configuração de modelos', 'Настройка моделей', 'Configuration des modèles', 'Modell-Konfiguration'),
desc: _('添加 AI 模型服务商,配置可用模型', 'Add AI model providers, configure available models', '新增 AI 模型服務商,設定可用模型', 'AI モデルプロバイダーとモデルの管理', 'AI 모델 프로바이더 및 모델 관리', 'Quản lý nhà cung cấp và mô hình AI', 'Gestionar proveedores y modelos de IA', 'Gerenciar provedores e modelos de IA', 'Управление провайдерами и моделями ИИ', 'Gérer les fournisseurs et modèles IA', 'KI-Anbieter und Modelle verwalten'),
addProvider: _('+ 添加服务商', '+ Add Provider', '+ 新增服務商', '+ プロバイダー追加', '+ 프로바이더 추가', '+ Thêm nhà cung cấp', '+ Agregar proveedor', '+ Adicionar provedor', '+ Добавить провайдера', '+ Ajouter un fournisseur', '+ Anbieter hinzufügen'),
undo: _('↩ 撤销', '↩ Undo'),
undoN: _('↩ 撤销 ({n})', '↩ Undo ({n})'),
undone: _('已撤销', 'Undone'),
providerHint: _('服务商是模型的来源(如 OpenAI、DeepSeek 等)。每个服务商下可添加多个模型。标记为「主模型」的将优先使用,其余作为备选自动切换。配置修改后自动保存。', 'Providers are sources of models (e.g. OpenAI, DeepSeek). Each provider can have multiple models. The "primary" model is used first; others serve as fallbacks. Changes are auto-saved.', '服務商是模型的來源(如 OpenAI、DeepSeek 等)。每個服務商下可新增多個模型。標記為「主模型」的將優先使用,其餘作為備選自動切換。設定修改后自動儲存。'),
qtcoolName: _('晴辰云', 'QingChen Cloud', '晴辰雲'),
qtcoolRecommend: _('推荐', 'Recommended', '推薦'),
qtcoolDesc: _('GPT-5 / Codex 全系列,低至官方价 2-3 折,不满意随时可退。', 'GPT-5 / Codex full series, as low as 20-30% of official price. Refund anytime.', 'GPT-5 / Codex 全系列,低至官方價 2-3 折,不滿意隨時可退。', 'GPT-5 / Codex 全シリーズ、公式価格の2〜3割', 'GPT-5 / Codex 전 시리즈, 공식가의 2~3할'),
qtcoolMore: _('了解更多 →', 'Learn more →'),
qtcoolCheckin: _('每日签到领额度', 'Daily check-in for credits', '每日簽到领额度'),
qtcoolKeyPlaceholder: _('粘贴 API Key签到后在用户后台获取', 'Paste API Key (get from dashboard after check-in)', '貼上 API Key簽到后在使用者後台取得'),
qtcoolFetchModels: _('获取模型列表', 'Fetch Model List', '取得模型列表'),
qtcoolFetching: _('获取中...', 'Fetching...', '取得中...'),
qtcoolNoKey: _('没有密钥?前往', 'No key? Go to', '沒有金鑰?前往'),
qtcoolCheckinPage: _('签到页', 'check-in page', '簽到頁'),
qtcoolCheckinHint: _('每日签到即可领取免费额度,在', 'for free daily credits, copy your Key from', '每日簽到即可领取免費额度,在'),
qtcoolDashboard: _('用户后台', 'dashboard', '使用者後台'),
qtcoolCopyKey: _('复制你的 Key', '', '複製你的 Key'),
qtcoolSelectTitle: _('选择要添加的模型', 'Select models to add', '選擇要新增的模型'),
qtcoolSelectHint: _('从晴辰云获取到 {count} 个可用模型,勾选需要的模型后点击添加。', 'Fetched {count} available models from QingChen Cloud. Select and add.', '從晴辰雲取得到 {count} 個可用模型,勾選需要的模型后点擊新增。'),
qtcoolKeyLabel: _('API Key', 'API Key'),
qtcoolKeyCheckinLink: _('每日签到领免费额度 →', 'Daily check-in for free credits →', '每日簽到领免費额度 →'),
qtcoolKeyPlaceholder2: _('粘贴你的 API Key', 'Paste your API Key', '貼上你的 API Key'),
qtcoolNoKeyWarn: _('请输入 API Key可通过每日签到免费获取', 'Please enter an API Key (get free credits via daily check-in)', '請輸入 API Key可通過每日簽到免費取得'),
qtcoolAddSelected: _('添加选中模型', 'Add Selected Models', '新增選中模型'),
qtcoolNoneSelected: _('未选择任何模型', 'No models selected', '未選擇任何模型'),
qtcoolAllExist: _('所选模型均已存在', 'All selected models already exist', '所選模型均已存在'),
qtcoolAdded: _('已添加 {count} 个模型', 'Added {count} models', '已新增 {count} 個模型'),
qtcoolProviderAdded: _('已添加晴辰云({count} 个模型)', 'Added QingChen Cloud ({count} models)', '已新增晴辰雲({count} 個模型)'),
already: _('已有', 'Exists'),
alreadyAdded: _('已添加', 'Added', '已新增'),
searchPlaceholder: _('搜索模型(按 ID 或名称过滤)', 'Search models (by ID or name)', '搜尋模型(按 ID 或名稱篩選)'),
currentConfig: _('当前生效配置', 'Current Configuration', '目前生效設定'),
primaryModel: _('主模型', 'Primary', '', 'プライマリモデル', '기본 모델', 'Mô hình chính', 'Modelo principal', 'Modelo principal', 'Основная модель', 'Modèle principal', 'Primäres Modell'),
primaryModelLabel: _('主模型:', 'Primary: '),
notConfigured: _('未配置', 'Not configured', '未設定'),
fallbackModels: _('备选模型:', 'Fallbacks: ', '備選模型:'),
fallbackNone: _('无', 'None', '無'),
fallbackHint: _('主模型不可用时,系统会自动切换到备选模型', 'When the primary model is unavailable, the system auto-switches to fallbacks', '主模型不可用時,系統會自動切換到備選模型'),
primaryAutoSwitch: _('主模型已自动切换为 {model}', 'Primary model auto-switched to {model}', '主模型已自動切換為 {model}'),
noProvider: _('暂无服务商,点击「+ 添加服务商」开始配置', 'No providers. Click "+ Add Provider" to get started.', '暫無服務商,点擊「+ 新增服務商」開始設定'),
noModel: _('暂无模型,点击「+ 模型」添加', 'No models. Click "+ Model" to add.', '暫無模型,点擊「+ 模型」新增'),
nModels: _('{count} 个模型', '{count} models', '{count} 個模型'),
hiddenModels: _('已隐藏 {count} 个不匹配的模型', '{count} non-matching models hidden', '已隱藏 {count} 個不匹配的模型'),
editProvider: _('编辑', 'Edit', '編輯', 'プロバイダー編集', '프로바이더 편집'),
addModel: _('+ 模型', '+ Model', '', 'モデル追加', '모델 추가', 'Thêm mô hình', 'Agregar modelo', 'Adicionar modelo', 'Добавить модель', 'Ajouter un modèle', 'Modell hinzufügen'),
fetchList: _('获取列表', 'Fetch List', '取得列表'),
deleteProvider: _('删除', 'Delete', '刪除', 'プロバイダー削除', '프로바이더 삭제'),
batchTest: _('批量测试', 'Batch Test', '批量測試'),
selectAll: _('全选', 'Select All', '全選', 'すべて選択', '모두 선택'),
selectNone: _('全不选', 'Deselect All', '全不選'),
batchDelete: _('批量删除', 'Batch Delete', '批量刪除'),
sort: _('排序:', 'Sort:'),
sortDefault: _('默认顺序 (拖拽调整)', 'Default order (drag to reorder)', '預設顺序 (拖曳調整)'),
sortNameAsc: _('名称 A-Z (固化到底层)', 'Name A-Z (persist)', '名稱 A-Z (固化到底層)'),
sortNameDesc: _('名称 Z-A (固化到底层)', 'Name Z-A (persist)', '名稱 Z-A (固化到底層)'),
sortLatencyAsc: _('延迟 低→高 (固化到底层)', 'Latency low→high (persist)', '延遲 低→高 (固化到底層)'),
sortLatencyDesc: _('延迟 高→低 (固化到底层)', 'Latency high→low (persist)', '延遲 高→低 (固化到底層)'),
sortContextAsc: _('上下文 小→大 (固化到底层)', 'Context small→large (persist)', '上下文 小→大 (固化到底層)'),
sortContextDesc: _('上下文 大→小 (固化到底层)', 'Context large→small (persist)', '上下文 大→小 (固化到底層)'),
applySortBtn: _('保存当前排序', 'Save current sort', '儲存目前排序'),
sortSaved: _('排序已保存', 'Sort order saved', '排序已儲存'),
reasoning: _('推理', 'Reasoning'),
unavailable: _('不可用', 'Unavailable'),
testBtn: _('测试', 'Test', '測試'),
setPrimary: _('设为主模型', 'Set Primary', '設為主模型', 'プライマリに設定', '기본으로 설정'),
setPrimaryDone: _('已设为主模型', 'Set as primary model', '已設為主模型'),
editModel: _('编辑', 'Edit', '編輯'),
deleteModel: _('删除', 'Delete', '刪除'),
context: _('上下文', 'context'),
justTested: _('刚刚测试', 'Just tested', '剛剛測試'),
minAgoTest: _('{n} 分钟前测试', '{n} min ago', '{n} 分鐘前測試'),
hourAgoTest: _('{n} 小时前测试', '{n} hr ago', '{n} 小時前測試'),
dayAgoTest: _('{n} 天前测试', '{n} day ago', '{n} 天前測試'),
confirmDeleteProvider: _('确定删除「{name}」及其所有模型?', 'Delete "{name}" and all its models?', '確定刪除「{name}」及其所有模型?'),
providerDeleted: _('已删除 {name}', 'Deleted {name}', '已刪除 {name}', 'プロバイダー削除済み', '프로바이더 삭제됨'),
confirmDeleteModel: _('确定删除模型「{name}」?', 'Delete model "{name}"?', '確定刪除模型「{name}」?'),
modelDeleted: _('已删除 {name}', 'Deleted {name}', '已刪除 {name}'),
confirmBatchDelete: _('确定删除选中的 {count} 个模型?\n{ids}', 'Delete {count} selected models?\n{ids}', '確定刪除選中的 {count} 個模型?\n{ids}'),
batchDeleted: _('已删除 {count} 个模型', 'Deleted {count} models', '已刪除 {count} 個模型'),
batchSelectHint: _('请先勾选要删除的模型', 'Please select models to delete first', '請先勾選要刪除的模型'),
addProviderTitle: _('添加服务商', 'Add Provider', '新增服務商'),
quickSelect: _('快捷选择', 'Quick Select', '快捷選擇'),
quickSelectHint: _('选择常用服务商自动填充,或手动填写下方信息', 'Choose a preset to auto-fill, or fill manually below', '選擇常用服務商自動填充,或手動填写下方資訊'),
providerName: _('服务商名称', 'Provider Name', '服務商名稱', 'プロバイダー名', '프로바이더명', 'Tên nhà cung cấp', 'Nombre del proveedor', 'Nome do provedor', 'Имя провайдера', 'Nom du fournisseur', 'Anbietername'),
providerNamePlaceholder: _('如 openai, newapi', 'e.g. openai, newapi'),
providerNameHint: _('自定义标识名,用于区分不同来源', 'Custom identifier to distinguish different sources', '自定義標識名,用於區分不同來源'),
baseUrl: _('接口地址', 'Base URL', '介面位址'),
baseUrlPlaceholder: _('https://api.openai.com/v1', 'https://api.openai.com/v1'),
baseUrlHint: _('模型服务的 API 地址,通常以 /v1 结尾Ollama 可直接填 http://127.0.0.1:11434', 'API endpoint URL, usually ends with /v1; Ollama: http://127.0.0.1:11434', '模型服務的 API 位址,通常以 /v1 結尾Ollama 可直接填 http://127.0.0.1:11434'),
apiKey: _('密钥 (API Key)', 'API Key', '金鑰 (API Key)'),
apiKeyPlaceholder: _('sk-...', 'sk-...'),
apiKeyHint: _('访问服务所需的密钥,留空表示无需认证', 'Required key for the service. Leave empty if not needed.', '訪問服務所需的金鑰,留空表示無需認證'),
apiType: _('接口类型', 'API Type', '介面類型'),
apiTypeHint: _('大多数中转站和 Ollama 选「OpenAI 兼容」即可', 'Most proxies and Ollama use "OpenAI Compatible"', '大多數中轉站和 Ollama 選「OpenAI 相容」即可'),
providerNameRequired: _('请填写服务商名称', 'Provider name is required', '請填写服務商名稱'),
providerAdded: _('已添加服务商: {name}', 'Provider added: {name}', '已新增服務商: {name}'),
editProviderTitle: _('编辑服务商: {name}', 'Edit Provider: {name}', '編輯服務商: {name}'),
apiKeyEditHint: _('修改后自动保存生效', 'Changes are auto-saved', '修改后自動儲存生效'),
providerUpdated: _('服务商已更新', 'Provider updated', '服務商已更新'),
addModelTitle: _('添加模型到 {provider}', 'Add Model to {provider}', '新增模型到 {provider}'),
quickAdd: _('快捷添加', 'Quick Add', '快捷新增'),
quickAddHint: _('点击直接添加常用模型,或手动填写下方信息', 'Click to add a common model, or fill in manually below', '点擊直接新增常用模型,或手動填写下方資訊'),
manualAdd: _('手动添加', 'Manual Add', '手動新增'),
modelId: _('模型 ID', 'Model ID'),
modelIdPlaceholder: _('如 gpt-4o', 'e.g. gpt-4o', '', 'モデル ID例: gpt-4o-mini'),
modelIdHint: _('必须与服务商支持的模型名一致', 'Must match the model name supported by the provider', '必須與服務商支援的模型名一致'),
modelIdRequired: _('请填写模型 ID', 'Model ID is required', '請填写模型 ID'),
displayName: _('显示名称(选填)', 'Display Name (optional)', '顯示名稱(選填)'),
displayNamePlaceholder: _('如 GPT-4o', 'e.g. GPT-4o'),
displayNameHint: _('方便识别的友好名称', 'A friendly name for identification', '方便識別的友好名稱'),
contextLength: _('上下文长度(选填)', 'Context Length (optional)', '上下文長度(選填)', 'コンテキスト長'),
contextLengthPlaceholder: _('如 128000', 'e.g. 128000'),
contextLengthHint: _('模型支持的最大 Token 数', 'Maximum token count supported by the model', '模型支援的最大 Token 數'),
isReasoning: _('这是推理模型(如 o3、R1、QwQ 等)', 'This is a reasoning model (e.g. o3, R1, QwQ)'),
reasoningHint: _('推理模型会使用特殊的调用方式', 'Reasoning models use special invocation methods', '推理模型會使用特殊的呼叫方式'),
modelAdded: _('已添加模型: {name}', 'Model added: {name}', '已新增模型: {name}'),
editModelTitle: _('编辑模型: {name}', 'Edit Model: {name}', '編輯模型: {name}'),
displayNameLabel: _('显示名称', 'Display Name', '顯示名稱'),
contextLengthLabel: _('上下文长度', 'Context Length', '上下文長度'),
isReasoningLabel: _('这是推理模型', 'Reasoning model'),
modelUpdated: _('模型已更新', 'Model updated'),
stopBatchTest: _('终止测试', 'Stop Test', '終止測試'),
stoppingBatchTest: _('正在终止批量测试...', 'Stopping batch test...', '正在終止批量測試...'),
noTestModels: _('没有可测试的模型', 'No models to test', '沒有可測試的模型'),
batchTestDone: _('批量测试完成:{ok} 成功,{fail} 失败', 'Batch test done: {ok} passed, {fail} failed', '批量測試完成:{ok} 成功,{fail} 失敗'),
batchTestAborted: _('批量测试已终止:{ok} 成功,{fail} 失败,{skip} 跳过', 'Batch test aborted: {ok} passed, {fail} failed, {skip} skipped', '批量測試已終止:{ok} 成功,{fail} 失敗,{skip} 略過'),
testing: _('测试中...', 'Testing...', '測試中...', 'テスト中...', '테스트 중...', 'Đang kiểm tra...', 'Probando...', 'Testando...', 'Проверка...', 'Test en cours...', 'Test läuft...'),
testOk: _('{model} 连通正常 ({time}s): "{reply}"', '{model} OK ({time}s): "{reply}"', '{model} 連通正常 ({time}s): "{reply}"'),
testFail: _('{model} 不可用 ({time}s): {error}', '{model} unavailable ({time}s): {error}'),
remoteListTitle: _('远程模型列表 — {provider} ({count} 个)', 'Remote Models — {provider} ({count})', '遠程模型列表 — {provider} ({count} 個)'),
remoteSearch: _('搜索模型...', 'Search models...', '搜尋模型...'),
remoteSelected: _('已选 {count} 个', '{count} selected', '已選 {count} 個'),
addSelected: _('添加选中', 'Add Selected', '新增選中'),
selectAtLeast: _('请至少选择一个模型', 'Please select at least one model', '請至少選擇一個模型'),
fetchFailed: _('获取模型列表失败: {error}', 'Failed to fetch model list: {error}', '取得模型列表失敗: {error}', 'モデルリスト取得失敗', '모델 목록 가져오기 실패'),
configNotReady: _('配置未加载完成,请稍候', 'Config not loaded yet, please wait', '設定未載入完成,請稍候'),
fetchRemoteFailed: _('无法获取模型列表,请检查网络或稍后重试', 'Cannot fetch model list. Check network or try later.', '無法取得模型列表,請檢查網路或稍后重試'),
configLoadFailed: _('加载配置失败', 'Failed to load config', '載入設定失敗'),
autoFixUrl: _('已自动修复模型接口地址(如 Ollama /v1', 'Auto-fixed model API URLs (e.g. Ollama /v1)', '已自動修复模型介面位址(如 Ollama /v1'),
saveFailed: _('保存失败', 'Save failed', '儲存失敗', '保存失敗', '저장 실패'),
autoSaveFailed: _('自动保存失败', 'Auto-save failed', '自動儲存失敗'),
configSavedRestarting: _('配置已保存,正在重启 Gateway...', 'Config saved, restarting Gateway...', '設定已儲存,正在重啟 Gateway...'),
configEffective: _('配置已生效Gateway 已重启', 'Config applied, Gateway restarted', '設定已生效Gateway 已重啟'),
retryRestart: _('重试', 'Retry', '重試'),
restarting: _('正在重启 Gateway...', 'Restarting Gateway...', '正在重啟 Gateway...'),
restartOk: _('Gateway 重启成功', 'Gateway restarted', 'Gateway 重啟成功'),
restartFailed: _('重启失败', 'Restart failed', '重啟失敗'),
configSavedGwFailed: _('配置已保存,但 Gateway 重启失败', 'Config saved, but Gateway restart failed', '設定已儲存,但 Gateway 重啟失敗'),
visitSite: _('访问 {name}官网', 'Visit {name} website', '訪問 {name}官網'),
}

View File

@@ -0,0 +1,50 @@
import { _ } from '../helper.js'
export default {
title: _('安全设置', 'Security Settings', '安全設定', 'セキュリティ', '보안', 'Bảo mật', 'Seguridad', 'Segurança', 'Безопасность', 'Sécurité', 'Sicherheit'),
loadFailed: _('加载失败', 'Load failed', '載入失敗', 'セキュリティ設定の読み込みに失敗', '보안 설정 로드 실패', 'Tải cài đặt thất bại', 'Error al cargar configuración', 'Falha ao carregar configurações', 'Ошибка загрузки настроек', 'Échec du chargement de la configuration', 'Einstellungen laden fehlgeschlagen'),
passwordStatus: _('访问密码状态', 'Password Status', '訪問密碼狀態'),
stateDefault: _('使用默认密码(需修改)', 'Using default password (change required)', '使用預設密碼(需修改)'),
stateCustom: _('已设置自定义密码', 'Custom password set', '已設定自定義密碼'),
stateIgnoreRisk: _('无视风险模式(无密码)', 'Ignore risk mode (no password)', '無视風險模式(無密碼)'),
stateNone: _('未设置密码', 'No password set', '未設定密碼'),
tauriHasPassword: _('每次打开应用需输入密码', 'Password required each time the app is opened', '每次開啟應用需輸入密碼'),
webHasPassword: _('远程访问需输入密码才能进入面板', 'Password required for remote access to the panel', '遠程訪問需輸入密碼才能進入面板'),
tauriNoPassword: _('任何人打开应用即可使用', 'Anyone who opens the app can use it', '任何人開啟應用即可使用'),
webNoPassword: _('任何人都可以直接访问面板', 'Anyone can access the panel directly', '任何人都可以直接訪問面板'),
changePassword: _('修改密码', 'Change Password', '修改密碼'),
setPassword: _('设置密码', 'Set Password', '設定密碼'),
currentPassword: _('当前密码', 'Current Password', '目前密碼'),
currentPasswordPlaceholder: _('输入当前密码', 'Enter current password', '輸入目前密碼'),
defaultFilled: _('已自动填充默认密码,直接设置新密码即可', 'Default password auto-filled. Just set a new password.', '已自動填充預設密碼,直接設定新密碼即可'),
newPassword: _('新密码', 'New Password', '新密碼'),
newPasswordPlaceholder: _('至少 6 位,不能纯数字', 'At least 6 chars, not all digits', '至少 6 位,不能純數字'),
confirmPassword: _('确认新密码', 'Confirm New Password', '確認新密碼'),
confirmPasswordPlaceholder: _('再次输入新密码', 'Enter new password again', '再次輸入新密碼'),
confirmChange: _('确认修改', 'Confirm Change', '確認修改'),
submitting: _('提交中...', 'Submitting...'),
passwordMismatch: _('两次输入的密码不一致', 'Passwords do not match', '兩次輸入的密碼不一致'),
passwordChanged: _('密码修改成功', 'Password changed successfully', '密碼修改成功'),
passwordUpdated: _('密码已更新', 'Password updated', '密碼已更新'),
wrongPassword: _('当前密码错误', 'Current password is incorrect', '目前密碼錯誤'),
pwMin6: _('密码至少 6 位', 'Password must be at least 6 characters', '密碼至少 6 位'),
pwMax64: _('密码不能超过 64 位', 'Password cannot exceed 64 characters', '密碼不能超過 64 位'),
pwNoDigitOnly: _('密码不能是纯数字', 'Password cannot be all digits', '密碼不能是純數字'),
pwTooCommon: _('密码太常见,请换一个更安全的密码', 'Password is too common, please choose a more secure one', '密碼太常见,請換一個更安全的密碼'),
pwSameAsOld: _('新密码不能与旧密码相同', 'New password cannot be the same as the old one', '新密碼不能與舊密碼相同'),
strengthTooShort: _('太短', 'Too short'),
strengthDigitOnly: _('纯数字太弱', 'All digits, too weak', '純數字太弱'),
strengthFair: _('一般', 'Fair'),
strengthGood: _('良好', 'Good'),
strengthStrong: _('强', 'Strong'),
ignoreRiskTitle: _('无视风险模式', 'Ignore Risk Mode', '無视風險模式'),
ignoreRiskLabel: _('关闭密码保护', 'Disable Password Protection', '關閉密碼保护'),
ignoreRiskDesc: _('开启后任何人都可以直接访问面板,无需输入密码。', 'When enabled, anyone can access the panel without a password.', '開啟后任何人都可以直接訪問面板,無需輸入密碼。'),
ignoreRiskWarn: _('仅建议在受信任的内网环境中使用。', 'Only recommended in trusted network environments.', '僅建議在受信任的內網環境中使用。'),
ignoreRiskConfirmTitle: _('确认关闭密码保护?', 'Disable password protection?', '確認關閉密碼保护?'),
ignoreRiskConfirmDesc: _('关闭后,<strong>任何能访问此服务器 IP 和端口的人</strong>都可以直接进入管理面板,查看和修改你的 AI 配置。', 'Once disabled, <strong>anyone who can reach this server\'s IP and port</strong> can directly access the admin panel and modify your AI config.', '關閉后,<strong>任何能訪問此伺服器 IP 和連接埠的人</strong>都可以直接進入管理面板,查看和修改你的 AI 設定。'),
ignoreRiskConfirmBtn: _('我了解风险,确认关闭', 'I understand the risk, confirm', '我了解風險,確認關閉'),
ignoreRiskEnabled: _('已开启无视风险模式,密码保护已关闭', 'Ignore risk mode enabled, password protection disabled', '已開啟無视風險模式,密碼保护已關閉'),
ignoreRiskDisabled: _('无视风险模式已关闭,请设置新密码', 'Ignore risk mode disabled, please set a new password', '無视風險模式已關閉,請設定新密碼'),
operationFailed: _('操作失败', 'Operation failed', '操作失敗'),
}

View File

@@ -0,0 +1,85 @@
import { _ } from '../helper.js'
export default {
title: _('服务管理', 'Services', '服務管理', 'サービス管理', '서비스 관리', 'Quản lý dịch vụ', 'Gestión de servicios', 'Gestão de serviços', 'Управление сервисами', 'Gestion des services', 'Dienstverwaltung'),
desc: _('管理 OpenClaw 服务、检查更新、配置备份', 'Manage OpenClaw services, check updates, config backups', '管理 OpenClaw 服務、檢查更新、設定備份', 'OpenClaw サービスの起動・停止・監視', 'OpenClaw 서비스 시작·중지·모니터링', 'Khởi động, dừng và giám sát dịch vụ OpenClaw', 'Iniciar, detener y monitorear servicios OpenClaw', 'Iniciar, parar e monitorar serviços OpenClaw', 'Запуск, остановка и мониторинг сервисов OpenClaw', 'Démarrer, arrêter et surveiller les services OpenClaw', 'OpenClaw-Dienste starten, stoppen und überwachen'),
start: _('启动', 'Start', '啟動', '起動', '시작', 'Khởi động', 'Iniciar', 'Iniciar', 'Запустить', 'Démarrer', 'Starten'),
stop: _('停止', 'Stop', '', '停止', '중지', 'Dừng', 'Detener', 'Parar', 'Остановить', 'Arrêter', 'Stoppen'),
restart: _('重启', 'Restart', '重啟', '再起動', '재시작', 'Khởi động lại', 'Reiniciar', 'Reiniciar', 'Перезапустить', 'Redémarrer', 'Neustarten'),
install: _('安装', 'Install', '安裝'),
uninstall: _('卸载', 'Uninstall', '卸載'),
installing: _('安装中...', 'Installing...', '安裝中...'),
uninstalling: _('卸载中...', 'Uninstalling...', '卸載中...'),
refreshStatus: _('刷新状态', 'Refresh', '重新整理狀態'),
cliNotInstalled: _('OpenClaw CLI 未安装', 'OpenClaw CLI not installed', 'OpenClaw CLI 未安裝'),
installCliHint: _('请先安装 OpenClaw CLI:', 'Please install OpenClaw CLI first:', '請先安裝 OpenClaw CLI:'),
gwNotInstalled: _('Gateway 服务未安装', 'Gateway service not installed', 'Gateway 服務未安裝'),
gwInstalled: _('Gateway 服务已安装', 'Gateway service installed', 'Gateway 服務已安裝'),
gwUninstalled: _('Gateway 服务已卸载', 'Gateway service uninstalled', 'Gateway 服務已卸載'),
installFailed: _('安装失败', 'Install failed', '安裝失敗'),
uninstallFailed: _('卸载失败', 'Uninstall failed', '卸載失敗'),
uninstallConfirm: _('确定要卸载 Gateway 服务吗?\n这会停止服务并移除 LaunchAgent。', 'Uninstall Gateway service?\nThis will stop the service and remove the LaunchAgent.', '確定要卸載 Gateway 服務吗?\n这會停止服務並移除 LaunchAgent。'),
actionProgress: _('正在{action}...', '{action} in progress...'),
actionProgressSec: _('正在{action}... {sec}s', '{action} in progress... {sec}s'),
actionTimeout: _('{action}超时Gateway 可能仍在启动中', '{action} timed out, Gateway may still be starting', '{action}逾時Gateway 可能仍在啟動中'),
actionCmdFailed: _('{action}命令失败: {error}', '{action} command failed: {error}', '{action}命令失敗: {error}'),
actionDone: _('{label} 已{action}', '{label} {action} complete'),
cancelWait: _('取消等待', 'Cancel wait'),
cancelled: _('已取消等待,可稍后刷新查看状态', 'Cancelled waiting. Refresh later to check status.', '已取消等待,可稍后重新整理查看狀態'),
currentVersion: _('当前版本', 'Current Version', '目前版本'),
dockerDeploy: _('Docker 部署', 'Docker Deploy'),
chineseEdition: _('汉化优化版', 'Chinese Edition', '漢化最佳化版'),
officialEdition: _('官方原版', 'Official Edition'),
switchToChinese: _('切换到汉化版', 'Switch to Chinese Edition', '切換到漢化版'),
switchToOfficial: _('切换到官方版', 'Switch to Official Edition', '切換到官方版'),
aheadOfRecommended: _('当前版本高于推荐稳定版: {version}', 'Current version is ahead of recommended stable: {version}', '目前版本高於推薦穩定版: {version}'),
alignedRecommended: _('已对齐推荐稳定版: {version}', 'Aligned with recommended stable: {version}', '已对齐推薦穩定版: {version}'),
recommendedStable: _('推荐稳定版: {version}', 'Recommended stable: {version}', '推薦穩定版: {version}'),
noRecommended: _('未获取到推荐稳定版', 'Recommended stable version unavailable', '未取得到推薦穩定版'),
latestUpstream: _('最新上游: {version}', 'Latest upstream: {version}'),
pullNewImage: _('请拉取新镜像更新', 'Pull new image to update', '請拉取新鏡像更新'),
currentImageVer: _('已是当前镜像版本', 'Already on current image version', '已是目前鏡像版本'),
rollbackToRecommended: _('回退到推荐版', 'Rollback to recommended', '回退到推薦版'),
switchToRecommended: _('切换到推荐版', 'Switch to recommended', '切換到推薦版'),
versionLoadFailed: _('版本信息加载失败', 'Failed to load version info', '版本資訊載入失敗'),
serviceLoadFailed: _('加载服务列表失败', 'Failed to load service list', '載入服務列表失敗'),
policyAhead: _('检测到当前本地版本 {ver} 高于面板推荐稳定版 {recommended},继续使用可能存在兼容或稳定性风险,建议尽快回退到推荐版。', 'Local version {ver} is ahead of panel recommended stable {recommended}. Continued use may have compatibility or stability risks. Consider rolling back.', '檢測到目前本地版本 {ver} 高於面板推薦穩定版 {recommended},繼續使用可能存在相容或穩定性風險,建議尽快回退到推薦版。'),
policyDefault: _('默认只建议当前面板已验证的推荐稳定版。如需尝试其它版本或最新特性,请到「关于」页手动切换版本并自行验证兼容性;若希望面板优先适配最新版,欢迎提交 issue。', 'Only the panel-verified recommended stable version is suggested by default. To try other versions or latest features, manually switch in the About page and verify compatibility yourself. To request newer version support, file an issue.', '預設只建議目前面板已驗證的推薦穩定版。如需尝試其它版本或最新特性,請到「關於」頁手動切換版本並自行驗證相容性;若希望面板優先適配最新版,欢迎提交 issue。'),
configEditor: _('配置文件编辑', 'Config Editor', '設定檔案編輯'),
configEditorHint: _('直接编辑 openclaw.json 主配置文件。保存前会自动创建备份,修改后可能需要重启 Gateway 生效。', 'Edit the openclaw.json config file directly. A backup is auto-created before saving. Changes may require a Gateway restart.', '直接編輯 openclaw.json 主設定檔案。儲存前會自動建立備份,修改后可能需要重啟 Gateway 生效。'),
saveAndRestart: _('保存并重启', 'Save & Restart', '儲存並重啟'),
saveOnly: _('仅保存', 'Save Only', '僅儲存'),
reloadConfig: _('重新加载', 'Reload', '重新載入'),
configLoaded: _('已加载', 'Loaded', '已載入'),
configUnsaved: _('有未保存的修改', 'Unsaved changes', '有未儲存的修改'),
configNoChange: _('无修改', 'No changes', '無修改'),
configJsonError: _('JSON 语法错误', 'JSON syntax error', 'JSON 語法錯誤'),
configSaveJsonError: _('JSON 格式错误,无法保存', 'Invalid JSON, cannot save', 'JSON 格式錯誤,無法儲存'),
autoBackingUp: _('自动备份中...', 'Auto-backing up...', '自動備份中...'),
autoBackupFailed: _('自动备份失败', 'Auto-backup failed', '自動備份失敗'),
continueWithoutBackup: _('是否仍然继续保存?', 'Continue saving anyway?', '是否仍然繼續儲存?'),
saving: _('保存中...', 'Saving...', '儲存中...'),
configSaved: _('配置已保存', 'Config saved', '設定已儲存'),
configSavedRestarting: _('配置已保存,正在重启 Gateway...', 'Config saved, restarting Gateway...', '設定已儲存,正在重啟 Gateway...'),
gwRestarted: _('Gateway 已重启', 'Gateway restarted', 'Gateway 已重啟', 'Gateway が再起動しました (PID: {pid})', 'Gateway 재시작됨 (PID: {pid})'),
configSavedGwFailed: _('配置已保存,但 Gateway 重启失败', 'Config saved, but Gateway restart failed', '設定已儲存,但 Gateway 重啟失敗'),
configBackup: _('配置备份', 'Config Backups', '設定備份'),
configBackupHint: _('备份范围openclaw.json 主配置文件含模型、Provider、Gateway 设置。Agent 数据和记忆文件不在此备份范围内。', 'Backup scope: openclaw.json main config (models, providers, Gateway settings). Agent data and memory files are not included.', '備份範圍openclaw.json 主設定檔案含模型、Provider、Gateway 設定。Agent 資料和記憶檔案不在此備份範圍內。'),
createBackup: _('创建备份', 'Create Backup', '建立備份'),
backupCreated: _('备份已创建: {name}', 'Backup created: {name}', '備份已建立: {name}'),
noBackup: _('暂无备份', 'No backups yet', '暫無備份'),
restore: _('恢复', 'Restore', '恢復'),
restoreConfirm: _('确定要恢复备份 "{name}" 吗?\n当前配置将自动备份后再恢复。', 'Restore backup "{name}"?\nCurrent config will be auto-backed up first.', '確定要恢復備份 "{name}" 吗?\n目前設定將自動備份后再恢復。'),
restored: _('配置已恢复', 'Config restored', '設定已恢復'),
deleteConfirm: _('确定要删除备份 "{name}" 吗?此操作不可撤销。', 'Delete backup "{name}"? This cannot be undone.', '確定要刪除備份 "{name}" 吗?此操作不可撤销。'),
backupDeleted: _('备份已删除', 'Backup deleted', '備份已刪除'),
backupLoadFailed: _('加载备份列表失败', 'Failed to load backup list', '載入備份列表失敗'),
upgradeTitle: _('升级 / 切换版本', 'Upgrade / Switch Version', '升級 / 切換版本'),
upgradeConfirm: _('确定要将 OpenClaw 切换到当前面板推荐的稳定{source}{version}吗?\n切换过程中 Gateway 会短暂中断。\n如果你想尝试最新版请到「关于」页手动切换版本并自测兼容性。', 'Switch OpenClaw to the panel-recommended stable {source}{version}?\nGateway will be briefly interrupted.\nTo try the latest version, manually switch in the About page.', '確定要將 OpenClaw 切換到目前面板推薦的穩定{source}{version}吗?\n切換過程中 Gateway 會短暂中斷。\n如果你想尝試最新版請到「關於」頁手動切換版本並自測相容性。'),
switchSourceConfirm: _('确定要切换到{target}{version}吗?\n这会安装对应的 npm 包,配置数据不受影响。\n如需尝试最新版请到「关于」页手动切换版本。', 'Switch to {target}{version}?\nThis installs the corresponding npm package. Config data is not affected.\nTo try the latest, manually switch in the About page.', '確定要切換到{target}{version}吗?\n这會安裝对應的 npm 包,設定資料不受影響。\n如需尝試最新版請到「關於」頁手動切換版本。'),
taskStarted: _('后台任务已启动,请等待完成...', 'Background task started, please wait...', '後台任務已啟動,請等待完成...'),
webModeNoLog: _('Web 模式:升级过程日志不可用,请等待完成...', 'Web mode: Upgrade logs unavailable, please wait...', 'Web 模式:升級過程日誌不可用,請等待完成...'),
taskDone: _('操作完成', 'Operation complete'),
upgradeDone: _('升级完成', 'Upgrade complete', '升級完成'),
upgradeScene: _('升级 OpenClaw', 'Upgrade OpenClaw', '升級 OpenClaw'),
}

View File

@@ -0,0 +1,55 @@
import { _ } from '../helper.js'
export default {
title: _('面板设置', 'Settings', '面板設定', 'パネル設定', '패널 설정', 'Cài đặt panel', 'Configuración del panel', 'Configurações do painel', 'Настройки панели', 'Paramètres du panneau', 'Panel-Einstellungen'),
desc: _('管理 ClawPanel 的网络、代理和下载源配置', 'Manage ClawPanel network, proxy and download source settings', '管理 ClawPanel 的網路、代理和下載源設定', 'ClawPanel のネットワーク、プロキシ、ダウンロードソース設定を管理', 'ClawPanel 네트워크, 프록시 및 다운로드 소스 설정 관리', 'Quản lý cài đặt mạng, proxy và nguồn tải xuống', 'Gestionar configuración de red, proxy y fuentes de descarga', 'Gerenciar configurações de rede, proxy e fontes de download', 'Управление сетью, прокси и источниками загрузки', 'Gérer les paramètres réseau, proxy et sources de téléchargement', 'Netzwerk-, Proxy- und Download-Einstellungen verwalten'),
networkProxy: _('网络代理', 'Network Proxy', '網路代理', 'ネットワークプロキシ', '네트워크 프록시', 'Proxy mạng', 'Proxy de red', 'Proxy de rede', 'Сетевой прокси', 'Proxy réseau', 'Netzwerk-Proxy'),
modelProxy: _('模型请求代理', 'Model Request Proxy', '模型請求代理', 'モデルリクエストプロキシ', '모델 요청 프록시', 'Proxy yêu cầu mô hình', 'Proxy de solicitudes de modelo', 'Proxy de solicitações de modelo', 'Прокси для запросов моделей', 'Proxy des requêtes de modèle', 'Modell-Anfrage-Proxy'),
npmRegistry: _('npm 源设置', 'npm Registry', 'npm 源設定', 'npm レジストリ', 'npm 레지스트리'),
openclawDir: _('OpenClaw 安装路径', 'OpenClaw Install Path', 'OpenClaw 安裝路徑', 'OpenClaw インストールパス', 'OpenClaw 설치 경로'),
openclawCli: _('OpenClaw CLI 绑定', 'OpenClaw CLI Binding', 'OpenClaw CLI 綁定', 'OpenClaw CLI バインド', 'OpenClaw CLI 바인딩'),
cliAutoDetect: _('自动检测(推荐)', 'Auto-detect (Recommended)', '自動檢測(推薦)', '自動検出(推奨)', '자동 감지 (권장)'),
cliBindHint: _('选择面板实际使用的 OpenClaw CLI适用于多版本共存场景', 'Select which OpenClaw CLI the panel should use, useful when multiple versions coexist', '選擇面板實際使用的 OpenClaw CLI適用於多版本共存場景', 'パネルが使用する OpenClaw CLI を選択、複数バージョン共存時に便利', '패널이 사용할 OpenClaw CLI 선택, 여러 버전 공존 시 유용'),
cliCurrent: _('当前使用', 'Currently used', '目前使用', '現在使用中', '현재 사용 중'),
cliBound: _('已绑定', 'Bound', '已綁定', 'バインド済み', '바인딩됨'),
cliActive: _('活跃', 'Active', '活躍', 'アクティブ', '활성'),
cliVersion: _('版本', 'Version', '', 'バージョン', '버전'),
cliSwitchConfirm: _('确定切换到此 CLI 吗?切换后面板将使用该安装进行所有操作。', 'Switch to this CLI? The panel will use this installation for all operations.', '確定切換到此 CLI 吗?切換后面板將使用該安裝進行所有操作。', 'この CLI に切り替えますか?パネルはすべての操作にこのインストールを使用します。'),
language: _('界面语言', 'Language', '界面語言', '表示言語', '표시 언어', 'Ngôn ngữ hiển thị', 'Idioma de visualización', 'Idioma de exibição', 'Язык интерфейса', 'Langue d\'affichage', 'Anzeigesprache'),
languageHint: _('切换界面显示语言,部分内容可能仍为中文', 'Switch the interface language. Some content may remain in the original language.', '切換界面顯示語言,部分內容可能仍為中文', 'インターフェース言語を切り替えます。一部コンテンツは元の言語のまま表示される場合があります。', '인터페이스 언어를 전환합니다. 일부 콘텐츠는 원래 언어로 표시될 수 있습니다.', 'Chuyển đổi ngôn ngữ giao diện.', 'Cambiar el idioma de la interfaz.', 'Alterar o idioma da interface.', 'Переключить язык интерфейса.', 'Changer la langue de l\'interface.', 'Sprache der Benutzeroberfläche wechseln.'),
testProxy: _('测试连通', 'Test Connection', '測試連通', '接続テスト', '연결 테스트', 'Kiểm tra kết nối', 'Probar conexión', 'Testar conexão', 'Проверить подключение', 'Tester la connexion', 'Verbindung testen'),
clearProxy: _('关闭代理', 'Disable Proxy', '關閉代理', 'プロキシ無効化', '프록시 비활성화', 'Tắt proxy', 'Desactivar proxy', 'Desativar proxy', 'Отключить прокси', 'Désactiver le proxy', 'Proxy deaktivieren'),
proxyHint: _('设置后npm 安装/升级、版本检测、GitHub/Gitee 更新检查、ClawHub Skills 等下载类操作会走此代理。自动绕过 localhost 和内网地址。保存后新请求立即生效;如 Gateway 正在运行,建议重启一次服务。', 'Once set, npm install/upgrade, version checks, GitHub/Gitee update checks, ClawHub Skills downloads will use this proxy. Localhost and LAN addresses are auto-bypassed. Takes effect immediately; if Gateway is running, consider restarting the service.', '設定后npm 安裝/升級、版本檢測、GitHub/Gitee 更新檢查、ClawHub Skills 等下載類操作會走此代理。自動繞過 localhost 和內網位址。儲存后新請求立即生效;如 Gateway 正在執行,建議重啟一次服務。', '設定後、npm インストール/アップグレード、バージョンチェック、GitHub/Gitee 更新チェック、ClawHub Skills ダウンロードはこのプロキシを使用します。localhost と LAN アドレスは自動バイパスされます。すぐに有効になります。Gateway が実行中の場合はサービスの再起動を検討してください。'),
modelProxyToggle: _('模型测试和模型列表请求也走代理', 'Route model test and model list requests through proxy', '模型測試和模型列表請求也走代理', 'モデルテストとモデルリストリクエストもプロキシ経由'),
modelProxyHint: _('默认关闭。部分用户的模型 API 地址本身就是国内中转或内网地址,走代理反而会连接失败。只有当你的模型服务商需要翻墙访问时才建议开启。', 'Off by default. Some model API endpoints are already domestic or LAN addresses — proxying them may cause connection failures. Only enable if your model provider requires a proxy.', '預設關閉。部分使用者的模型 API 位址本身就是國內中轉或內網位址,走代理反而會連線失敗。只有當你的模型服務商需要翻牆訪問時才建議開啟。', 'デフォルトオフ。一部のモデル API は国内中継または LAN アドレスのため、プロキシを使用すると接続に失敗する場合があります。モデルプロバイダーがプロキシを必要とする場合のみ有効にしてください。'),
modelProxyNoProxy: _('请先在上方设置网络代理地址后,才能启用此选项。', 'Please set up a network proxy above before enabling this option.', '請先在上方設定網路代理位址后,才能啟用此選項。', 'まず上のネットワークプロキシアドレスを設定してから、このオプションを有効にしてください。'),
registryTaobao: _('淘宝镜像 (推荐)', 'Taobao Mirror (Recommended for China)', '淘寶鏡像 (推薦)', 'Taobao ミラー(中国推奨)', 'Taobao 미러 (중국 권장)'),
registryNpm: _('npm 官方源', 'npm Official', '', 'npm 公式', 'npm 공식'),
registryHuawei: _('华为云镜像', 'Huawei Cloud Mirror', '華為雲鏡像', 'Huawei Cloud ミラー', 'Huawei Cloud 미러'),
registryCustom: _('自定义', 'Custom', '自定義', 'カスタム', '사용자 정의'),
registryHint: _('升级和版本检测使用此源下载 npm 包,国内用户推荐淘宝镜像', 'npm registry used for upgrades and version checks. Taobao mirror recommended for users in China.', '升級和版本檢測使用此源下載 npm 包,國內使用者推薦淘寶鏡像', 'アップグレードとバージョンチェックに使用する npm レジストリ。中国のユーザーには Taobao ミラー推奨。'),
registryEmpty: _('请输入源地址', 'Please enter a registry URL', '請輸入源位址', 'レジストリ URL を入力してください', '레지스트리 URL을 입력하세요'),
registrySaved: _('npm 源已保存', 'npm registry saved', 'npm 源已儲存', 'npm レジストリ保存済み', 'npm 레지스트리 저장됨'),
configExists: _('配置文件存在', 'Config file exists', '設定檔案存在', '設定ファイルあり', '설정 파일 있음'),
configMissing: _('配置文件不存在', 'Config file not found', '設定檔案不存在', '設定ファイルが見つかりません', '설정 파일을 찾을 수 없음'),
currentPath: _('当前路径', 'Current path', '目前路徑', '現在のパス', '현재 경로'),
customBadge: _('自定义', 'Custom', '自定義', 'カスタム', '사용자 정의'),
dirPlaceholder: _('留空使用默认路径 ~/.openclaw', 'Leave empty for default path ~/.openclaw', '留空使用預設路徑 ~/.openclaw', 'デフォルトパス ~/.openclaw を使用するには空欄のまま'),
resetDefault: _('恢复默认', 'Reset Default', '恢復預設', 'デフォルトに戻す', '기본값으로 복원', 'Khôi phục mặc định', 'Restaurar predeterminado', 'Restaurar padrão', 'Восстановить по умолчанию', 'Restaurer les paramètres par défaut', 'Standard wiederherstellen'),
dirHint: _('自定义 OpenClaw 配置目录路径。修改后需要重启面板生效。目标目录必须存在且包含 openclaw.json。', 'Custom OpenClaw config directory path. Restart required after changes. Target directory must exist and contain openclaw.json.', '自定義 OpenClaw 設定目錄路徑。修改后需要重啟面板生效。目標目錄必須存在且包含 openclaw.json。', 'カスタム OpenClaw 設定ディレクトリパス。変更後は再起動が必要です。対象ディレクトリは存在し、openclaw.json を含む必要があります。'),
customPathSaved: _('自定义路径已保存', 'Custom path saved', '自定義路徑已儲存', 'カスタムパス保存済み', '사용자 정의 경로 저장됨'),
defaultRestored: _('已恢复默认路径', 'Default path restored', '已恢復預設路徑', 'デフォルトパスに戻しました', '기본 경로로 복원됨'),
restartConfirm: _('需要重启面板才能生效,是否立即重启?', 'Restart required for changes to take effect. Restart now?', '需要重啟面板才能生效,是否立即重啟?', '変更を反映するにはパネルの再起動が必要です。今すぐ再起動しますか?'),
restarting: _('正在重启...', 'Restarting...', '正在重啟...', '再起動中...', '재시작 중...', 'Đang khởi động lại...', 'Reiniciando...', 'Reiniciando...', 'Перезапуск...', 'Redémarrage...', 'Wird neugestartet...'),
restartFailed: _('自动重启失败,请手动关闭后重新打开', 'Auto-restart failed, please close and reopen manually', '自動重啟失敗,請手動關閉后重新開啟', '自動再起動に失敗しました。手動で閉じて再度開いてください'),
effectNextLaunch: _('下次启动时生效', 'will take effect on next launch', '下次啟動時生效', '次回起動時に有効'),
proxyUrlInvalid: _('代理地址必须以 http:// 或 https:// 开头', 'Proxy URL must start with http:// or https://', '代理位址必須以 http:// 或 https:// 開頭', 'プロキシ URL は http:// または https:// で始まる必要があります'),
testingProxy: _('正在测试代理连通性...', 'Testing proxy connectivity...', '正在測試代理連通性...', 'プロキシ接続をテスト中...'),
proxyOk: _('代理连通HTTP {status},耗时 {ms}ms→ {target}', 'Proxy connected (HTTP {status}, {ms}ms) → {target}', '代理連通HTTP {status},耗時 {ms}ms→ {target}', 'プロキシ接続成功HTTP {status}、{ms}ms→ {target}', '프록시 연결됨 (HTTP {status}, {ms}ms) → {target}'),
proxyWarn: _('代理可达但返回异常HTTP {status}{ms}ms', 'Proxy reachable but returned abnormal response (HTTP {status}, {ms}ms)', '代理可達但返回異常HTTP {status}{ms}ms', 'プロキシに到達可能ですが異常な応答HTTP {status}、{ms}ms'),
proxyUrlEmpty: _('请输入代理地址,或点击「关闭代理」', 'Please enter a proxy URL, or click "Disable Proxy"', '請輸入代理位址,或点擊「關閉代理」', 'プロキシアドレスを入力するか、「プロキシ無効化」をクリックしてください'),
proxySaved: _('网络代理已保存;如 Gateway 正在运行,建议重启服务', 'Network proxy saved; if Gateway is running, consider restarting the service', '網路代理已儲存;如 Gateway 正在執行,建議重啟服務', 'ネットワークプロキシ保存済み。Gateway が実行中の場合はサービスの再起動を検討してください', '네트워크 프록시 저장됨'),
proxyCleared: _('网络代理已关闭', 'Network proxy disabled', '網路代理已關閉', 'ネットワークプロキシ無効化', '네트워크 프록시 비활성화됨'),
modelProxyOn: _('模型请求将走代理', 'Model requests will use proxy', '模型請求將走代理', 'モデルリクエストはプロキシを使用します', '모델 요청이 프록시를 사용합니다'),
modelProxyOff: _('模型请求已关闭代理', 'Model requests proxy disabled', '模型請求已關閉代理', 'モデルリクエストプロキシ無効化', '모델 요청 프록시 비활성화됨'),
}

View File

@@ -0,0 +1,141 @@
import { _ } from '../helper.js'
export default {
title: _('初始设置', 'Setup', '初始設定', '初期設定', '초기 설정', 'Thiết lập ban đầu', 'Configuración inicial', 'Configuração inicial', 'Начальная настройка', 'Configuration initiale', 'Ersteinrichtung'),
desc: _('安装和配置 OpenClaw', 'Install and configure OpenClaw', '安裝和設定 OpenClaw', 'OpenClaw のインストールと設定', 'OpenClaw 설치 및 설정', 'Cài đặt và cấu hình OpenClaw', 'Instalar y configurar OpenClaw', 'Instalar e configurar OpenClaw', 'Установка и настройка OpenClaw', 'Installer et configurer OpenClaw', 'OpenClaw installieren und konfigurieren'),
headerTitle: _('欢迎使用 ClawPanel', 'Welcome to ClawPanel', '', 'ClawPanel へようこそ', 'ClawPanel에 오신 것을 환영합니다', 'Chào mừng đến ClawPanel', 'Bienvenido a ClawPanel', 'Bem-vindo ao ClawPanel', 'Добро пожаловать в ClawPanel', 'Bienvenue sur ClawPanel', 'Willkommen bei ClawPanel'),
headerDesc: _('OpenClaw AI Agent 框架的桌面管理面板', 'Desktop management panel for OpenClaw AI Agent framework', '', 'OpenClaw AI Agent フレームワークのデスクトップ管理パネル', 'OpenClaw AI Agent 프레임워크의 데스크톱 관리 패널'),
recheck: _('重新检测', 'Re-detect', '重新檢測', '再検出', '재감지', 'Kiểm tra lại', 'Verificar de nuevo', 'Verificar novamente', 'Проверить снова', 'Revérifier', 'Erneut prüfen'),
stepNode: _('Node.js 环境', 'Node.js Environment', 'Node.js 環境', 'Node.js 環境', 'Node.js 환경', 'Môi trường Node.js', 'Entorno Node.js', 'Ambiente Node.js', 'Среда Node.js', 'Environnement Node.js', 'Node.js-Umgebung'),
installed: _('已安装', 'Installed', '已安裝', 'インストール済み', '설치됨', 'Đã cài đặt', 'Instalado', 'Instalado', 'Установлено', 'Installé', 'Installiert'),
stepNodeHint: _('OpenClaw 基于 Node.js 运行,请先安装。', 'OpenClaw requires Node.js, please install it first.', 'OpenClaw 基於 Node.js 執行,請先安裝。', 'OpenClaw は Node.js で動作します。先にインストールしてください。'),
downloadNode: _('下载 Node.js', 'Download Node.js', '下載 Node.js', 'Node.js をダウンロード', 'Node.js 다운로드', 'Tải Node.js', 'Descargar Node.js', 'Baixar Node.js', 'Скачать Node.js', 'Télécharger Node.js', 'Node.js herunterladen'),
recheckAfterInstall: _('安装后点击「重新检测」', 'Click "Re-detect" after installation', '安裝后点擊「重新檢測」', 'インストール後「再検出」をクリック'),
nodeInstalledButNotDetected: _('已经装了但检测不到?', 'Already installed but not detected?', '已經裝了但檢測不到?', 'インストール済みなのに検出されない?'),
macNodeHint: _('macOS 上从 Finder 启动可能找不到 Node.js。试试关掉 ClawPanel 后从终端启动:', 'On macOS, launching from Finder may not find Node.js. Try closing ClawPanel and launching from terminal:', 'macOS 上從 Finder 啟動可能找不到 Node.js。試試關掉 ClawPanel 后從終端啟動:'),
winNodeHint: _('安装 Node.js 后点击「重新检测」或使用下方「自动扫描」,无需重启。', 'After installing Node.js, click "Re-detect" or use "Auto Scan" below, no restart needed.', '安裝 Node.js 后点擊「重新檢測」或使用下方「自動掃描」,無需重啟。'),
scanNodeBtn: _('自动扫描', 'Auto Scan', '自動掃描', '自動スキャン', '자동 스캔'),
orManualPath: _('或手动指定路径:', 'Or specify path manually:', '或手動指定路徑:', 'またはパスを手動指定:'),
checkPathBtn: _('检测', 'Check', '檢測', '検出'),
stepGit: _('Git 版本管理', 'Git Version Control', '', 'Git バージョン管理', 'Git 버전 관리', 'Git', 'Git', 'Git', 'Git', 'Git', 'Git'),
gitHttpsConfigured: _('已自动配置 Git 使用 HTTPS避免 SSH 连接问题)', 'Auto-configured Git to use HTTPS (avoids SSH connection issues)', '已自動設定 Git 使用 HTTPS避免 SSH 連線問題)'),
stepGitHint: _('部分依赖需要 Git 下载源码。点击下方按钮自动安装,如果失败请手动安装。', 'Some dependencies require Git to download source code. Click the button below to auto-install, or install manually if it fails.', '部分依赖需要 Git 下載源碼。点擊下方按鈕自動安裝,如果失敗請手動安裝。', '一部の依存関係には Git が必要です。下のボタンで自動インストールするか、手動でインストールしてください。'),
autoInstallGitBtn: _('一键安装 Git', 'Auto Install Git', '一鍵安裝 Git', 'Git をワンクリックインストール', 'Git 원클릭 설치'),
manualDownload: _('手动下载', 'Manual Download', '手動下載', '手動ダウンロード', '수동 다운로드'),
gitOptionalHint: _('<strong>没有 Git 也能安装?</strong> 大部分情况下可以,但个别依赖可能需要 Git。建议安装以避免问题。', '<strong>Can I install without Git?</strong> Usually yes, but some dependencies may require Git. Recommended to install to avoid issues.', '<strong>沒有 Git 也能安裝?</strong> 大部分情況下可以,但個別依赖可能需要 Git。建議安裝以避免問題。'),
cliAvailable: _('CLI 可用', 'CLI available'),
cliAheadWarning: _('检测到当前本地 OpenClaw {current} 高于当前面板推荐稳定版 {recommended},可能存在兼容或稳定性风险。建议稍后到「关于」页回退到推荐版。', 'Detected local OpenClaw {current} is ahead of the panel\'s recommended stable version {recommended}. There may be compatibility or stability risks. Consider rolling back to the recommended version on the About page.', '檢測到目前本地 OpenClaw {current} 高於目前面板推薦穩定版 {recommended},可能存在相容或穩定性風險。建議稍后到「關於」頁回退到推薦版。'),
stepConfig: _('配置文件', 'Config File', '設定檔案', '設定ファイル', '설정 파일', 'Tệp cấu hình', 'Archivo de configuración', 'Arquivo de configuração', 'Файл конфигурации', 'Fichier de configuration', 'Konfigurationsdatei'),
configAt: _('配置文件位于 {path}', 'Config file at {path}', '設定檔案位於 {path}', '設定ファイル: {path}'),
configMissing: _('配置文件不存在,点击下方按钮自动创建默认配置。', 'Config file not found. Click the button below to create default config.', '設定檔案不存在,点擊下方按鈕自動建立預設設定。', '設定ファイルが存在しません。下のボタンでデフォルト設定を自動作成します。', '설정 파일이 존재하지 않습니다'),
initConfigLabel: _('一键初始化配置', 'Initialize Config', '一鍵初始化設定', '設定をワンクリック初期化', '설정 원클릭 초기화'),
customDirTitle: _('自定义 OpenClaw 安装路径', 'Custom OpenClaw Install Path', '自定義 OpenClaw 安裝路徑', 'カスタム OpenClaw インストールパス', '사용자 정의 OpenClaw 설치 경로'),
customDirHint: _('如果 OpenClaw 安装在非默认目录(如 <code>E:\\数据\\AI\\.openclaw</code>),可在此指定。留空则使用默认路径。', 'If OpenClaw is installed in a non-default directory, specify it here. Leave empty to use the default path.', '如果 OpenClaw 安裝在非預設目錄(如 <code>E:\\資料\\AI\\.openclaw</code>),可在此指定。留空則使用預設路徑。', 'OpenClaw がデフォルト以外のディレクトリにインストールされている場合、ここで指定できます。空欄の場合はデフォルトパスを使用します。'),
customDirPlaceholder: _('例如 E:\\\\数据\\\\AI\\\\.openclaw', 'e.g. E:\\\\Data\\\\AI\\\\.openclaw', '例如 E:\\\\資料\\\\AI\\\\.openclaw'),
saveBtn: _('保存', 'Save', '儲存', '保存', '저장', 'Lưu', 'Guardar', 'Salvar', 'Сохранить', 'Enregistrer', 'Speichern'),
resetDefaultBtn: _('恢复默认', 'Reset Default', '恢復預設', 'デフォルトに戻す', '기본값으로 복원', 'Khôi phục mặc định', 'Restaurar predeterminado', 'Restaurar padrão', 'Восстановить по умолчанию', 'Restaurer les paramètres par défaut', 'Standard wiederherstellen'),
aiAssistant: _('晴辰助手', 'AI Assistant', '', 'AI アシスタント', 'AI 어시스턴트', 'Trợ lý AI', 'Asistente IA', 'Assistente IA', 'ИИ-ассистент', 'Assistant IA', 'KI-Assistent'),
aiAssistantDesc: _('遇到安装问题AI 助手可以帮你诊断和解决。配置好模型后,点击下方按钮', 'Having installation issues? AI Assistant can help diagnose and solve them. After configuring a model, click the button below', '遇到安裝問題AI 助手可以幫你诊斷和解決。設定好模型后,点擊下方按鈕', 'インストールの問題がありますかAI アシスタントが診断と解決をお手伝いします。'),
aiAssistantDescProblem: _(',当前问题会自动发送给 AI 分析', ', current issues will be auto-sent to AI for analysis', ',目前問題會自動發送给 AI 分析'),
openAiAssistant: _('打开 AI 助手', 'Open AI Assistant', '開啟 AI 助手', 'AI アシスタントを開く', 'AI 어시스턴트 열기', 'Mở trợ lý AI', 'Abrir asistente IA', 'Abrir assistente IA', 'Открыть ИИ-ассистента', 'Ouvrir l\'assistant IA', 'KI-Assistent öffnen'),
askAiHelp: _('让 AI 帮我解决', 'Ask AI for Help', '讓 AI 幫我解決', 'AI に解決してもらう'),
nextStepsTitle: _('下一步建议', 'Next Steps', '下一步建議', '次のステップ', '다음 단계', 'Bước tiếp theo', 'Próximos pasos', 'Próximos passos', 'Следующие шаги', 'Étapes suivantes', 'Nächste Schritte'),
nextStepsDesc: _('当前仅表示运行环境已经就绪,并不代表已经可以直接聊天。通常还需要继续完成以下步骤:', 'Environment is ready, but you still need to complete the following steps before chatting:', '目前僅表示執行環境已經就緒,並不代表已經可以直接聊天。通常还需要繼續完成以下步驟:', '現在、実行環境の準備ができたことを示していますが、すぐにチャットできるわけではありません。通常、以下のステップを完了する必要があります:'),
nextStep1: _('前往「模型配置」添加至少一个可用模型,并确认主模型已设置', 'Go to "Model Config" to add at least one model and confirm primary model is set', '前往「模型設定」新增至少一個可用模型,並確認主模型已設定', '「モデル設定」で少なくとも1つのモデルを追加し、プライマリモデルを設定', '「모델 설정」에서 최소 1개 모델 추가 및 기본 모델 설정'),
nextStep2: _('前往「Gateway」确认服务已启动', 'Go to "Gateway" to confirm service is running', '前往「Gateway」確認服務已啟動', '「Gateway」でサービスが起動していることを確認', '「Gateway」에서 서비스가 시작되었는지 확인'),
nextStep3: _('如需飞书、钉钉、QQ 等消息渠道,请到「消息渠道」完成接入与配对', 'For messaging channels (Feishu, DingTalk, QQ etc.), go to "Channels" to set up', '如需飛書、釘釘、QQ 等訊息頻道,請到「訊息頻道」完成接入與配对', 'Feishu、DingTalk、QQ などのチャンネルが必要な場合は「チャンネル」で設定', 'Feishu, DingTalk, QQ 등의 채널이 필요하면「채널」에서 설정'),
configModels: _('配置模型', 'Configure Models', '設定模型', 'モデル設定', '모델 설정', 'Cấu hình mô hình', 'Configurar modelos', 'Configurar modelos', 'Настроить модели', 'Configurer les modèles', 'Modelle konfigurieren'),
gatewaySetup: _('Gateway 设置', 'Gateway Setup', 'Gateway 設定', 'Gateway 設定', 'Gateway 설정', 'Cấu hình Gateway', 'Configurar Gateway', 'Configurar Gateway', 'Настроить Gateway', 'Configurer Gateway', 'Gateway konfigurieren'),
messageChannels: _('消息渠道', 'Message Channels', '訊息頻道', 'チャンネル', '채널', 'Kênh', 'Canales', 'Canais', 'Каналы', 'Canaux', 'Kanäle'),
enterPanel: _('进入面板', 'Enter Panel', '進入面板', 'パネルに入る', '패널 진입', 'Vào panel', 'Entrar al panel', 'Entrar no painel', 'Войти в панель', 'Entrer dans le panneau', 'Panel betreten'),
installHint: _('点击安装后,将默认安装当前 ClawPanel 版本绑定的推荐稳定版;如需升降级,可稍后到「关于」页面切换版本。', 'Installation will use the recommended stable version bound to this ClawPanel release. To change versions later, go to the About page.', '点擊安裝后,將預設安裝目前 ClawPanel 版本綁定的推薦穩定版;如需升降級,可稍后到「關於」頁面切換版本。'),
installHint2: _('如果你是为了体验最新版功能,建议先安装推荐稳定版再手动切换;若希望面板优先适配最新版,欢迎提交 issue。', 'To try latest features, install the recommended stable version first then switch manually. To request latest version support, submit an issue.', '如果你是為了體驗最新版功能,建議先安裝推薦穩定版再手動切換;若希望面板優先適配最新版,欢迎提交 issue。'),
sourceChineseLabel: _('汉化优化版(推荐)', 'Chinese Optimized (Recommended)', '漢化最佳化版(推薦)'),
sourceOfficialLabel: _('官方原版', 'Official Version'),
installMethodLabel: _('安装方式', 'Install Method', '安裝方式'),
methodAuto: _('自动选择(推荐)', 'Auto Select (Recommended)', '自動選擇(推薦)'),
methodStandaloneR2: _('独立安装包 · CDN 加速(国内推荐,自带 Node.js无需 npm', 'Standalone Package · CDN (Recommended for China, includes Node.js, no npm needed)', '獨立安裝包 · CDN 加速(國內推薦,自帶 Node.js無需 npm'),
methodStandaloneGithub: _('独立安装包 · GitHubCDN 不可用时备选)', 'Standalone Package · GitHub (Fallback when CDN unavailable)', '獨立安裝包 · GitHubCDN 不可用時備選)'),
methodNpm: _('npm 编译安装(传统方式,需要 Node.js + npm + 网络)', 'npm Install (Traditional, requires Node.js + npm + network)', 'npm 編译安裝(傳統方式,需要 Node.js + npm + 網路)'),
registryLabel: _('npm 镜像源', 'npm Registry', 'npm 鏡像源'),
registryTaobao: _('淘宝镜像(推荐国内用户)', 'Taobao Mirror (Recommended for China)', '淘寶鏡像(推薦國內使用者)'),
registryNpm: _('npm 官方源', 'npm Official'),
registryHuawei: _('华为云镜像', 'Huawei Cloud Mirror', '華為雲鏡像'),
installBtn: _('一键安装', 'Install', '一鍵安裝', 'ワンクリックインストール', '원클릭 설치', 'Cài đặt nhanh', 'Instalación rápida', 'Instalação rápida', 'Быстрая установка', 'Installation rapide', 'Schnellinstallation'),
methodHintAuto: _('自动选择最优安装方式:优先使用独立安装包(零依赖、最快),失败时自动降级到 npm 编译安装。', 'Auto-selects best method: prefers standalone package (zero deps, fastest), falls back to npm on failure.', '自動選擇最優安裝方式:優先使用獨立安裝包(零依赖、最快),失敗時自動降級到 npm 編译安裝。'),
methodHintR2: _('从晴辰云 CDN 下载独立安装包,自带 Node.js 运行时,无需 npm。国内下载速度最快。', 'Downloads standalone package from CDN with bundled Node.js runtime, no npm needed. Fastest for China.', '從晴辰雲 CDN 下載獨立安裝包,自帶 Node.js 執行時,無需 npm。國內下載速度最快。'),
methodHintGithub: _('从 GitHub Releases 下载独立安装包。CDN 不可用时的备选方案。', 'Downloads standalone package from GitHub Releases. Fallback when CDN is unavailable.', '從 GitHub Releases 下載獨立安裝包。CDN 不可用時的備選方案。'),
methodHintNpm: _('传统的 npm install 方式,需要本机已安装 Node.js 和 npm且网络能访问 npm 仓库。', 'Traditional npm install, requires local Node.js, npm, and network access to npm registry.', '傳統的 npm install 方式,需要本機已安裝 Node.js 和 npm且網路能訪問 npm 倉庫。'),
envHintTitle: _('找不到已安装的 OpenClaw', 'Can\'t find installed OpenClaw?', '找不到已安裝的 OpenClaw'),
envHintDesc: _('ClawPanel 桌面版只能管理<strong>本机</strong>安装的 OpenClaw。以下环境中的安装无法被检测到', 'ClawPanel desktop can only manage <strong>locally</strong> installed OpenClaw. Installations in these environments cannot be detected:', 'ClawPanel 桌面版只能管理<strong>本機</strong>安裝的 OpenClaw。以下環境中的安裝無法被檢測到'),
envHintWsl: _('WSL (Windows 子系统)', 'WSL (Windows Subsystem for Linux)', 'WSL (Windows 子系統)'),
envHintWslDesc: _('OpenClaw 装在 WSL 里Windows 侧无法访问', 'OpenClaw in WSL is not accessible from Windows side', 'OpenClaw 裝在 WSL 里Windows 側無法訪問'),
envHintDocker: _('Docker 容器', 'Docker Container'),
envHintDockerDesc: _('容器内的安装与宿主机隔离', 'Container installations are isolated from host', '容器內的安裝與宿主機隔離'),
envHintRemote: _('远程服务器', 'Remote Server', '遠程伺服器'),
envHintRemoteDesc: _('安装在其他机器上', 'Installed on another machine', '安裝在其他機器上'),
envHintInstallManage: _('在对应环境中安装管理面板', 'Install management panel in the corresponding environment', '在对應環境中安裝管理面板'),
envHintLocalReinstall: _('或者,你也可以在本机重新安装 OpenClaw使用下方的「一键安装」。', 'Or, reinstall OpenClaw locally using the install button below.', '或者,你也可以在本機重新安裝 OpenClaw使用下方的「一鍵安裝」。'),
wslWebHint: _('WSL 中使用 Web 版:', 'Use Web version in WSL:'),
wslWebDesc: _('打开 WSL 终端,一键部署 ClawPanel Web 版:', 'Open WSL terminal, one-click deploy ClawPanel Web version:', '開啟 WSL 終端,一鍵部署 ClawPanel Web 版:'),
wslWebPostDeploy: _('部署后在浏览器访问 WSL 的 IP 即可管理。', 'After deployment, access via WSL IP in your browser.', '部署后在瀏覽器訪問 WSL 的 IP 即可管理。'),
dockerHint: _('Docker 容器中使用:', 'Use in Docker container:'),
dockerDesc: _('在容器内安装 OpenClaw + ClawPanel Web 版:', 'Install OpenClaw + ClawPanel Web in container:', '在容器內安裝 OpenClaw + ClawPanel Web 版:'),
remoteHint: _('远程服务器:', 'Remote server:', '遠程伺服器:'),
remoteDesc: _('SSH 登录服务器后执行:', 'SSH into server and run:', 'SSH 登入伺服器后執行:'),
domesticMirror: _('国内用户如无法访问 GitHub', 'For users in China who cannot access GitHub:', '國內使用者如無法訪問 GitHub'),
domesticMirrorShort: _('国内镜像:', 'China mirror:', '國內鏡像:'),
promptNodeMissing: _('Node.js 未安装或未检测到', 'Node.js not installed or not detected', 'Node.js 未安裝或未檢測到'),
promptNodeOk: _('Node.js 已安装: {version}', 'Node.js installed: {version}', 'Node.js 已安裝: {version}'),
promptGitMissing: _('Git 未安装', 'Git not installed', 'Git 未安裝'),
promptGitOk: _('Git 已安装: {version}', 'Git installed: {version}', 'Git 已安裝: {version}'),
promptCliMissing: _('OpenClaw CLI 未安装', 'OpenClaw CLI not installed', 'OpenClaw CLI 未安裝'),
promptCliOk: _('OpenClaw CLI 已安装', 'OpenClaw CLI installed', 'OpenClaw CLI 已安裝'),
promptConfigMissing: _('配置文件不存在', 'Config file not found', '設定檔案不存在'),
promptConfigOk: _('配置文件正常: {path}', 'Config file OK: {path}', '設定檔案正常: {path}'),
promptIntro: _('我在安装 OpenClaw 时遇到问题,以下是当前检测状态:', 'I\'m having issues installing OpenClaw. Here is the current detection status:', '我在安裝 OpenClaw 時遇到問題,以下是目前檢測狀態:'),
promptOutro: _('请帮我分析问题并给出解决步骤。如果需要,请使用工具帮我检查系统环境。', 'Please help me analyze the issues and provide solution steps. Use tools to check the system environment if needed.', '請幫我分析問題並给出解決步驟。如果需要,請使用工具幫我檢查系統環境。'),
installOpenclaw: _('安装 OpenClaw', 'Install OpenClaw', '安裝 OpenClaw', 'OpenClaw をインストール', 'OpenClaw 설치', 'Cài đặt OpenClaw', 'Instalar OpenClaw', 'Instalar OpenClaw', 'Установить OpenClaw', 'Installer OpenClaw', 'OpenClaw installieren'),
installingGit: _('安装中...', 'Installing...', '安裝中...'),
gitInstallingHint: _('正在安装 Git请稍候...', 'Installing Git, please wait...', '正在安裝 Git請稍候...'),
gitInstallSuccess: _('Git 安装成功', 'Git installed successfully', 'Git 安裝成功'),
gitAutoInstallFailed: _('自动安装失败: {err}', 'Auto install failed: {err}', '自動安裝失敗: {err}'),
gitManualHint: _('请手动安装 Git', 'Please install Git manually:', '請手動安裝 Git'),
gitManualInstallHtml: _('<strong>Windows:</strong> 下载 <a href="https://git-scm.com/downloads" target="_blank" style="color:var(--accent)">git-scm.com</a> 安装包<br><strong>macOS:</strong> 在终端执行 <code style="background:var(--bg-secondary);padding:2px 4px;border-radius:3px">xcode-select --install</code> 或 <code style="background:var(--bg-secondary);padding:2px 4px;border-radius:3px">brew install git</code><br><strong>Linux:</strong> <code style="background:var(--bg-secondary);padding:2px 4px;border-radius:3px">sudo apt install git</code> 或 <code style="background:var(--bg-secondary);padding:2px 4px;border-radius:3px">sudo yum install git</code>', '<strong>Windows:</strong> Download from <a href="https://git-scm.com/downloads" target="_blank" style="color:var(--accent)">git-scm.com</a><br><strong>macOS:</strong> Run <code style="background:var(--bg-secondary);padding:2px 4px;border-radius:3px">xcode-select --install</code> or <code style="background:var(--bg-secondary);padding:2px 4px;border-radius:3px">brew install git</code><br><strong>Linux:</strong> <code style="background:var(--bg-secondary);padding:2px 4px;border-radius:3px">sudo apt install git</code> or <code style="background:var(--bg-secondary);padding:2px 4px;border-radius:3px">sudo yum install git</code>', '<strong>Windows:</strong> 下載 <a href="https://git-scm.com/downloads" target="_blank" style="color:var(--accent)">git-scm.com</a> 安裝包<br><strong>macOS:</strong> 在終端執行 <code style="background:var(--bg-secondary);padding:2px 4px;border-radius:3px">xcode-select --install</code> 或 <code style="background:var(--bg-secondary);padding:2px 4px;border-radius:3px">brew install git</code><br><strong>Linux:</strong> <code style="background:var(--bg-secondary);padding:2px 4px;border-radius:3px">sudo apt install git</code> 或 <code style="background:var(--bg-secondary);padding:2px 4px;border-radius:3px">sudo yum install git</code>'),
gitAutoInstallFailedToast: _('Git 自动安装失败,请手动安装', 'Git auto install failed, please install manually', 'Git 自動安裝失敗,請手動安裝'),
enterPath: _('请输入路径', 'Please enter a path', '請輸入路徑'),
saving: _('保存中...', 'Saving...', '儲存中...'),
pathSaved: _('路径已保存,正在重新检测...', 'Path saved, re-detecting...', '路徑已儲存,正在重新檢測...'),
customPathSaved: _('自定义路径已保存', 'Custom path saved', '自定義路徑已儲存'),
saveFailed: _('保存失败: {err}', 'Save failed: {err}', '儲存失敗: {err}'),
defaultRestored: _('已恢复默认路径,正在重新检测...', 'Default path restored, re-detecting...', '已恢復預設路徑,正在重新檢測...'),
defaultRestoredToast: _('已恢复默认路径', 'Default path restored', '已恢復預設路徑'),
restoreFailed: _('恢复失败: {err}', 'Restore failed: {err}', '恢復失敗: {err}'),
initializing: _('初始化中...', 'Initializing...'),
configCreated: _('配置文件已创建', 'Config file created', '設定檔案已建立'),
configExists: _('配置文件已存在', 'Config file already exists', '設定檔案已存在'),
initFailed: _('初始化失败: {err}', 'Init failed: {err}', '初始化失敗: {err}'),
scanning: _('扫描中...', 'Scanning...', '掃描中...'),
scanningPaths: _('正在扫描常见安装路径...', 'Scanning common install paths...', '正在掃描常见安裝路徑...'),
scanNotFound: _('未找到 Node.js 安装,请手动指定路径或下载安装。', 'Node.js not found, please specify path manually or download.', '未找到 Node.js 安裝,請手動指定路徑或下載安裝。'),
scanUseBtn: _('使用', 'Use'),
scanFailed: _('扫描失败: {err}', 'Scan failed: {err}', '掃描失敗: {err}'),
nodeSaved: _('Node.js 路径已保存,正在重新检测...', 'Node.js path saved, re-detecting...', 'Node.js 路徑已儲存,正在重新檢測...'),
detecting2: _('检测中...', 'Detecting...', '檢測中...'),
nodeFoundSaved: _('找到 Node.js {version},路径已保存', 'Found Node.js {version}, path saved', '找到 Node.js {version},路徑已儲存'),
nodeNotFoundAtPath: _('该目录下未找到 node 可执行文件,请确认路径正确。', 'Node executable not found in this directory, please verify the path.', '該目錄下未找到 node 可執行檔案,請確認路徑正確。'),
enterNodeDir: _('请输入 Node.js 安装目录', 'Please enter Node.js install directory', '請輸入 Node.js 安裝目錄'),
checkFailed: _('检测失败: {err}', 'Detection failed: {err}', '檢測失敗: {err}'),
installComplete: _('安装完成', 'Installation complete', '安裝完成', 'インストール完了', '설치 완료', 'Cài đặt hoàn tất', 'Instalación completada', 'Instalação concluída', 'Установка завершена', 'Installation terminée', 'Installation abgeschlossen'),
installingGateway: _('正在安装 Gateway 服务...', 'Installing Gateway service...', '正在安裝 Gateway 服務...'),
gatewayInstalled: _('Gateway 服务已安装', 'Gateway service installed', 'Gateway 服務已安裝'),
gatewayInstallFailed: _('Gateway 安装失败: {err}', 'Gateway install failed: {err}', 'Gateway 安裝失敗: {err}'),
gwModeSet: _('已设置 Gateway 运行模式为 local', 'Gateway mode set to local', '已設定 Gateway 執行模式為 local'),
toolsFullEnabled: _('已开启 Agent 工具全部权限', 'Agent tools full permissions enabled', '已開啟 Agent 工具全部權限'),
autoConfigFailed: _('自动配置失败: {err}', 'Auto config failed: {err}', '自動設定失敗: {err}'),
installSuccess: _('OpenClaw 安装成功', 'OpenClaw installed successfully', 'OpenClaw 安裝成功', 'OpenClaw インストール成功', 'OpenClaw 설치 성공'),
setRegistry: _('设置 npm 镜像源: {url}', 'Setting npm registry: {url}', '設定 npm 鏡像源: {url}'),
bgTaskStarted: _('后台安装任务已启动,请等待完成...', 'Background install task started, please wait...', '後台安裝任務已啟動,請等待完成...'),
webModeLogHint: _('Web 模式:安装日志不可用,请等待完成...', 'Web mode: Install logs unavailable, please wait...', 'Web 模式:安裝日誌不可用,請等待完成...'),
installScene: _('初始安装 OpenClaw', 'Initial OpenClaw installation', '初始安裝 OpenClaw', 'OpenClaw 初期インストール'),
}

View File

@@ -0,0 +1,31 @@
import { _ } from '../helper.js'
export default {
collapse: _('折叠/展开', 'Collapse / Expand', '摺疊/展開', '折りたたみ/展開', '접기/펼치기', 'Thu gọn', 'Colapsar', 'Recolher', 'Свернуть', 'Réduire', 'Einklappen'),
closeMenu: _('关闭菜单', 'Close menu', '關閉菜單', 'メニューを閉じる', '메뉴 닫기', 'Đóng menu', 'Cerrar menú', 'Fechar menu', 'Закрыть меню', 'Fermer le menu', 'Menü schließen'),
themeLight: _('日间模式', 'Light Mode', '日間模式', 'ライトモード', '라이트 모드', 'Sáng', 'Claro', 'Claro', 'Светлая', 'Clair', 'Hell'),
themeDark: _('夜间模式', 'Dark Mode', '夜間模式', 'ダークモード', '다크 모드', 'Tối', 'Oscuro', 'Escuro', 'Тёмная', 'Sombre', 'Dunkel'),
sectionMonitor: _('监控', 'Monitor', '監控', 'モニター', '모니터링', 'Giám sát', 'Monitoreo', 'Monitoramento', 'Мониторинг', 'Surveillance', 'Überwachung'),
sectionConfig: _('配置', 'Config', '設定', '設定', '설정', 'Cấu hình', 'Configuración', 'Configuração', 'Настройки', 'Configuration', 'Konfiguration'),
sectionData: _('数据', 'Data', '資料', 'データ', '데이터', 'Dữ liệu', 'Datos', 'Dados', 'Данные', 'Données', 'Daten'),
sectionExtension: _('扩展', 'Extensions', '擴充', '拡張', '확장', 'Mở rộng', 'Extensiones', 'Extensões', 'Расширения', '', 'Erweiterungen'),
dashboard: _('仪表盘', 'Dashboard', '儀表盤', 'ダッシュボード', '대시보드', 'Bảng điều khiển', 'Panel', 'Painel', 'Панель', 'Tableau de bord'),
assistant: _('晴辰助手', 'Assistant', '', 'アシスタント', '어시스턴트', 'Trợ lý', 'Asistente', 'Assistente', 'Ассистент', '', 'Assistent'),
chat: _('实时聊天', 'Live Chat', '實時聊天', 'ライブチャット', '실시간 채팅', 'Trò chuyện', 'Chat', 'Chat', 'Чат', 'Chat', 'Live-Chat'),
services: _('服务管理', 'Services', '服務管理', 'サービス管理', '서비스 관리', 'Dịch vụ', 'Servicios', 'Serviços', 'Сервисы', '', 'Dienste'),
logs: _('日志查看', 'Logs', '日誌查看', 'ログ', '로그', 'Nhật ký', 'Registros', '', 'Журналы', 'Journaux', 'Protokolle'),
models: _('模型配置', 'Models', '模型設定', 'モデル設定', '모델 설정', 'Mô hình', 'Modelos', 'Modelos', 'Модели', 'Modèles', 'Modelle'),
agents: _('Agent 管理', 'Agents', '', 'Agent 管理', 'Agent 관리', 'Agent', 'Agentes', 'Agentes', 'Агенты', '', 'Agenten'),
gateway: _('Gateway', 'Gateway'),
channels: _('消息渠道', 'Channels', '訊息頻道', 'チャンネル', '채널', 'Kênh', 'Canales', 'Canais', 'Каналы', 'Canaux', 'Kanäle'),
communication: _('通信与自动化', 'Communication', '通信與自動化', '通信と自動化', '통신 및 자동화', 'Truyền thông', 'Comunicación', 'Comunicação', 'Коммуникации', '', 'Kommunikation'),
security: _('安全设置', 'Security', '安全設定', 'セキュリティ', '보안 설정', 'Bảo mật', 'Seguridad', 'Segurança', 'Безопасность', 'Sécurité', 'Sicherheit'),
memory: _('记忆文件', 'Memory', '記憶檔案', 'メモリ', '메모리', 'Bộ nhớ', 'Memoria', 'Memória', 'Память', 'Mémoire', 'Speicher'),
cron: _('定时任务', 'Cron Jobs', '定時任務', 'スケジュールタスク', '예약 작업', 'Tác vụ định kỳ', 'Tareas', 'Tarefas', 'Планировщик', 'Tâches planifiées', 'Geplante Aufgaben'),
usage: _('使用情况', 'Usage', '使用情況', '使用状況', '사용 현황', 'Sử dụng', 'Uso', 'Uso', 'Использование', 'Utilisation', 'Nutzung'),
skills: _('Skills', 'Skills'),
settings: _('面板设置', 'Settings', '面板設定', 'パネル設定', '패널 설정', 'Cài đặt', 'Configuración', 'Configurações', 'Настройки', 'Paramètres', 'Einstellungen'),
chatDebug: _('系统诊断', 'Diagnostics', '系統诊斷', 'システム診断', '시스템 진단', 'Chẩn đoán', 'Diagnóstico', 'Diagnóstico', 'Диагностика', 'Diagnostic', 'Diagnose'),
about: _('关于', 'About', '關於', 'について', '정보', 'Giới thiệu', 'Acerca de', 'Sobre', 'О программе', 'À propos', 'Über'),
setup: _('初始设置', 'Setup', '初始設定', '初期設定', '초기 설정', 'Thiết lập', 'Configuración inicial', 'Configuração inicial', 'Начальная настройка', 'Configuration initiale', 'Ersteinrichtung'),
}

View File

@@ -0,0 +1,80 @@
import { _ } from '../helper.js'
export default {
title: _('Skills', 'Skills'),
desc: _('管理已安装的 Skills或从社区搜索安装新技能', 'Manage installed Skills or search and install new ones from the community', '管理已安裝的 Skills或從社區搜尋安裝新技能', 'OpenClaw Skills の管理とインストール', 'OpenClaw Skills 관리 및 설치', 'Quản lý và cài đặt OpenClaw Skills', 'Gestionar e instalar OpenClaw Skills', 'Gerenciar e instalar OpenClaw Skills', 'Управление и установка навыков OpenClaw', 'Gérer et installer les Skills OpenClaw', 'OpenClaw Skills verwalten und installieren'),
tabInstalled: _('已安装', 'Installed', '已安裝'),
tabStore: _('搜索安装', 'Search & Install', '搜尋安裝'),
filterPlaceholder: _('过滤 Skills...', 'Filter Skills...', '篩選 Skills...'),
refresh: _('刷新', 'Refresh', '重新整理'),
loading: _('正在加载 Skills...', 'Loading Skills...', '正在載入 Skills...'),
loadFailed: _('加载失败', 'Load failed', '載入失敗', 'Skills の読み込みに失敗', 'Skills 로드 실패', 'Tải thất bại', 'Error al cargar', 'Falha ao carregar', 'Ошибка загрузки', 'Échec du chargement', 'Laden fehlgeschlagen'),
loadFailedHint: _('请确认 OpenClaw 已安装并可用', 'Please confirm OpenClaw is installed and available', '請確認 OpenClaw 已安裝並可用'),
retry: _('重试', 'Retry', '重試'),
eligible: _('可用', 'Available'),
missingDeps: _('缺依赖', 'Missing Deps'),
disabled: _('已禁用', 'Disabled', '已停用'),
blocked: _('已阻止', 'Blocked'),
eligibleGroup: _('✓ 可用', '✓ Available'),
missingGroup: _('✗ 缺少依赖', '✗ Missing Dependencies'),
disabledGroup: _('⏸ 已禁用', '⏸ Disabled', '⏸ 已停用'),
blockedGroup: _('🚫 白名单阻止', '🚫 Blocked by Allowlist', '🚫 白名單阻止'),
aiFixBtn: _('让 AI 助手帮我安装', 'Let AI assistant help install', '讓 AI 助手幫我安裝'),
summary: _('共 {total} 个 Skills: {detail}', '{total} Skills: {detail}', '共 {total} 個 Skills: {detail}'),
summaryDetail: _('{eligible} 可用 / {missing} 缺依赖 / {disabled} 已禁用', '{eligible} available / {missing} missing deps / {disabled} disabled', '{eligible} 可用 / {missing} 缺依赖 / {disabled} 已停用'),
noSkills: _('未检测到任何 Skills', 'No Skills detected', '未檢測到任何 Skills', 'Skills なし', 'Skills 없음', 'Không có Skills', 'Sin Skills', 'Sem Skills', 'Нет навыков', 'Aucun Skill', 'Keine Skills'),
noSkillsHint: _('请确认 OpenClaw 已正确安装。Skills 随 OpenClaw 捆绑提供;自定义 Skills 可能位于 <code>~/.openclaw/skills/</code> 或 <code>~/.claude/skills/</code>。', 'Please confirm OpenClaw is properly installed. Skills are bundled with OpenClaw; custom Skills may be in <code>~/.openclaw/skills/</code> or <code>~/.claude/skills/</code>.', '請確認 OpenClaw 已正確安裝。Skills 隨 OpenClaw 捆綁提供;自定義 Skills 可能位於 <code>~/.openclaw/skills/</code> 或 <code>~/.claude/skills/</code>。'),
bundled: _('捆绑', 'Bundled', '捆綁'),
custom: _('自定义', 'Custom', '自定義'),
missingCmd: _('缺少命令', 'Missing commands'),
missingEnv: _('缺少环境变量', 'Missing env vars', '缺少環境變數'),
missingEnvHint: _('— 需在系统环境变量中配置', '— must be set in system environment', '— 需在系統環境變數中設定'),
missingConfig: _('缺少配置', 'Missing config', '缺少設定'),
missingConfigHint: _('— 需在 openclaw.json 中配置', '— must be set in openclaw.json', '— 需在 openclaw.json 中設定'),
noAutoInstall: _('无自动安装选项,请手动安装', 'No auto-install option, please install manually', '無自動安裝選項,請手動安裝'),
detail: _('详情', 'Details', '詳情'),
uninstall: _('卸载', 'Uninstall', '卸載', 'アンインストール', '제거', 'Gỡ cài đặt', 'Desinstalar', 'Desinstalar', 'Удалить', 'Désinstaller', 'Deinstallieren'),
loadingDetail: _('正在加载详情...', 'Loading details...', '正在載入詳情...'),
detailSource: _('来源', 'Source', '來源'),
detailPath: _('路径', 'Path', '路徑'),
reqBins: _('需要命令', 'Required commands'),
reqEnv: _('环境变量', 'Environment variables', '環境變數'),
installOptions: _('安装选项', 'Install options', '安裝選項'),
detailLoadFailed: _('加载详情失败', 'Failed to load details', '載入詳情失敗'),
installing: _('安装中...', 'Installing...', '安裝中...', 'インストール中...', '설치 중...', 'Đang cài...', 'Instalando...', 'Instalando...', 'Установка...', 'Installation...', 'Wird installiert...'),
depInstalled: _('{name} 依赖安装成功', '{name} dependency installed', '{name} 依赖安裝成功'),
installFailed: _('安装失败', 'Install failed', '安裝失敗', 'インストール失敗', '설치 실패', 'Cài đặt thất bại', 'Error al instalar', 'Falha ao instalar', 'Ошибка установки', 'Échec de l\'installation', 'Installation fehlgeschlagen'),
searchPlaceholder: _('搜索技能,如 weather / github / tavily', 'Search skills, e.g. weather / github / tavily', '搜尋技能,如 weather / github / tavily'),
search: _('搜索', 'Search', '搜尋', 'Skills を検索...', 'Skills 검색...', 'Tìm kiếm Skills...', 'Buscar Skills...', 'Pesquisar Skills...', 'Поиск Skills...', 'Rechercher Skills...', 'Skills suchen...'),
installCLI: _('安装 CLI', 'Install CLI', '安裝 CLI'),
browse: _('浏览', 'Browse', '瀏覽'),
searchEmpty: _('输入关键词搜索社区 Skills然后一键安装', 'Enter keywords to search community Skills, then install with one click', '輸入關鍵詞搜尋社區 Skills然後一鍵安裝'),
searchKeyword: _('输入关键词搜索社区 Skills', 'Enter keywords to search community Skills', '輸入關鍵詞搜尋社區 Skills'),
searching: _('正在搜索...', 'Searching...', '正在搜尋...', '検索中...', '검색 중...'),
noResults: _('没有找到匹配的 Skill', 'No matching Skills found', '沒有找到匹配的 Skill', '一致するスキルなし', '일치하는 스킬 없음', 'Không có kết quả', 'Sin resultados', 'Sem resultados', 'Ничего не найдено', 'Aucun résultat', 'Keine Ergebnisse'),
install: _('安装', 'Install', '安裝', 'インストール', '설치', 'Cài đặt', 'Instalar', 'Instalar', 'Установить', 'Installer', 'Installieren'),
installed: _('已安装', 'Installed', '已安裝', 'インストール済み', '설치됨', 'Đã cài', 'Instalados', 'Instalados', 'Установленные', 'Installés', 'Installiert'),
searchFailed: _('搜索失败', 'Search failed', '搜尋失敗'),
rateLimited: _('⚠️ 请求频率超限', '⚠️ Rate limited', '⚠️ 請求頻率超限'),
rateLimitClawHub: _('ClawHub 海外源限流,建议切换到 SkillHub国内加速', 'ClawHub rate limited, try switching to SkillHub (China accelerated)', 'ClawHub 海外源限流,建議切換到 SkillHub國內加速'),
rateLimitRetry: _('请稍后再试', 'Please try again later', '請稍后再試'),
skillhubNeedCLI: _('⚠️ 请先安装 SkillHub CLI', '⚠️ Please install SkillHub CLI first', '⚠️ 請先安裝 SkillHub CLI'),
skillhubNeedCLIHint: _('点击上方「安装 CLI」按钮或切换到 ClawHub 源搜索', 'Click "Install CLI" above, or switch to ClawHub source', '点擊上方「安裝 CLI」按鈕或切換到 ClawHub 源搜尋'),
skillhubSetup: _('一键安装 SkillHub CLI', 'Install SkillHub CLI', '一鍵安裝 SkillHub CLI'),
skillhubInstalling: _('正在安装 SkillHub CLI...', 'Installing SkillHub CLI...', '正在安裝 SkillHub CLI...'),
skillhubInstalled: _('SkillHub CLI 安装成功', 'SkillHub CLI installed', 'SkillHub CLI 安裝成功'),
skillhubInstallFailed: _('SkillHub CLI 安装失败', 'SkillHub CLI installation failed', 'SkillHub CLI 安裝失敗'),
confirmUninstall: _('确定卸载 Skill「{name}」?', 'Uninstall Skill "{name}"?', '確定卸載 Skill「{name}」?', 'スキル「{name}」をアンインストールしますか?', '스킬「{name}」을 제거하시겠습니까?'),
uninstalling: _('卸载中...', 'Uninstalling...', '卸載中...', 'アンインストール中...', '제거 중...'),
uninstalled: _('已卸载 {name}', 'Uninstalled {name}', '已卸載 {name}'),
uninstallFailed: _('卸载失败', 'Uninstall failed', '卸載失敗', 'アンインストール失敗', '제거 실패'),
skillInstalled: _('Skill {name} 安装成功', 'Skill {name} installed', 'Skill {name} 安裝成功'),
sourceSkillHub: _('SkillHub国内加速', 'SkillHub (China accelerated)', 'SkillHub國內加速'),
sourceClawHub: _('ClawHub原版海外', 'ClawHub (Original overseas)'),
sourceLocalScanTimeout: _('CLI 可用,但本次调用超时,当前显示本地扫描结果', 'CLI available but timed out, showing local scan results', 'CLI 可用,但本次呼叫逾時,目前顯示本地掃描結果'),
sourceLocalScanParseFailed: _('CLI 可用,但返回结果解析失败,当前显示本地扫描结果', 'CLI available but output parse failed, showing local scan results', 'CLI 可用,但返回結果解析失敗,目前顯示本地掃描結果'),
sourceLocalScanExecFailed: _('CLI 调用失败,当前显示本地扫描结果', 'CLI execution failed, showing local scan results', 'CLI 呼叫失敗,目前顯示本地掃描結果'),
sourceLocalScan: _('当前显示本地扫描结果', 'Showing local scan results', '目前顯示本地掃描結果'),
sourceLocalScanNoCli: _('CLI 不可用,当前显示本地扫描结果', 'CLI not available, showing local scan results', 'CLI 不可用,目前顯示本地掃描結果'),
sourceCLI: _('当前已使用 OpenClaw CLI 结果', 'Using OpenClaw CLI results', '目前已使用 OpenClaw CLI 結果'),
}

View File

@@ -0,0 +1,6 @@
import { _ } from '../helper.js'
export default {
copySuccess: _('已复制到剪贴板', 'Copied to clipboard', '已複製到剪貼板', 'クリップボードにコピーしました', '클립보드에 복사됨', 'Đã sao chép', 'Copiado al portapapeles', 'Copiado', 'Скопировано', 'Copié', 'Kopiert'),
copyFailed: _('复制失败', 'Copy failed', '複製失敗', 'コピー失敗', '복사 실패', 'Sao chép thất bại', 'Error al copiar', 'Falha ao copiar', 'Ошибка копирования', 'Échec de la copie', 'Kopieren fehlgeschlagen'),
}

View File

@@ -0,0 +1,45 @@
import { _ } from '../helper.js'
export default {
title: _('使用情况', 'Usage', '使用情況', '使用状況', '사용 현황', 'Sử dụng', 'Uso', 'Uso', 'Использование', 'Utilisation', 'Nutzung'),
desc: _('查看 Token 消耗、API 费用和模型使用统计', 'View token consumption, API costs and model usage statistics', '查看 Token 消耗、API 費用和模型使用統計', 'モデル使用量とトークン統計を表示', '모델 사용량 및 토큰 통계 보기', 'Xem thống kê sử dụng mô hình và token', 'Ver estadísticas de uso de modelos y tokens', 'Ver estatísticas de uso de modelos e tokens', 'Статистика использования моделей и токенов', 'Voir les statistiques d\'utilisation des modèles et tokens', 'Modell- und Token-Nutzungsstatistiken anzeigen'),
today: _('今天', 'Today', '', '今日', '오늘', 'Hôm nay', 'Hoy', 'Hoje', 'Сегодня', 'Aujourd\'hui', 'Heute'),
days7: _('7天', '7 Days'),
days30: _('30天', '30 Days'),
refresh: _('刷新', 'Refresh', '重新整理'),
gwConnecting: _('Gateway 连接中...', 'Connecting to Gateway...', 'Gateway 連線中...'),
gwWait: _('等待 Gateway 连接就绪后自动加载', 'Will auto-load once Gateway is connected', '等待 Gateway 連線就緒后自動載入'),
loadFailed: _('加载失败', 'Load failed', '載入失敗', '使用データの読み込みに失敗', '사용 데이터 로드 실패', 'Tải thất bại', 'Error al cargar', 'Falha ao carregar', 'Ошибка загрузки', 'Échec du chargement', 'Laden fehlgeschlagen'),
loadFailedHint: _('可能需要更新 OpenClaw 到 2026.3.11+ 以支持 Usage API', 'You may need to update OpenClaw to 2026.3.11+ for Usage API support', '可能需要更新 OpenClaw 到 2026.3.11+ 以支援 Usage API'),
retry: _('重试', 'Retry', '重試'),
noData: _('暂无数据', 'No data', '暫無資料', '使用データなし', '사용 데이터 없음', 'Không có dữ liệu', 'Sin datos', 'Sem dados', 'Нет данных', 'Aucune donnée', 'Keine Daten'),
messages: _('消息', 'Messages', '訊息'),
userMsgs: _('用户', 'user', '使用者'),
assistantMsgs: _('助手', 'assistant'),
toolCalls: _('工具调用', 'Tool Calls', '工具呼叫'),
toolKinds: _('{count} 种工具', '{count} tools', '{count} 種工具'),
errors: _('错误', 'Errors', '錯誤'),
errorRate: _('错误率', 'Error rate', '錯誤率'),
totalTokens: _('Token 总量', 'Total Tokens', 'Token 總量', '合計トークン', '총 토큰', 'Tổng token', 'Tokens totales', 'Total de tokens', 'Всего токенов', 'Tokens totaux', 'Gesamte Tokens'),
input: _('输入', 'input', '輸入'),
output: _('输出', 'output', '輸出'),
cost: _('费用', 'Cost', '費用', 'コスト', '비용'),
sessions: _('会话', 'Sessions', '對話'),
topModels: _('热门模型', 'Top Models', '熱門模型'),
topProviders: _('热门服务商', 'Top Providers', '熱門服務商'),
topTools: _('热门工具', 'Top Tools', '熱門工具'),
topAgents: _('热门 Agent', 'Top Agents', '熱門 Agent'),
topChannels: _('热门渠道', 'Top Channels', '熱門頻道'),
tokenBreakdown: _('Token 分类', 'Token Breakdown', 'Token 分類', 'トークン内訳'),
outputTokens: _('输出', 'Output', '輸出', '出力トークン', '출력 토큰'),
inputTokens: _('输入', 'Input', '輸入', '入力トークン', '입력 토큰'),
cacheRead: _('缓存读取', 'Cache Read', '快取讀取'),
cacheWrite: _('缓存写入', 'Cache Write', '快取写入'),
dailyUsage: _('每日用量', 'Daily Usage'),
sessionDetail: _('会话明细', 'Session Details', '對話明細'),
recentN: _('最近 {count} 个', 'Recent {count}', '最近 {count} 個'),
times: _('{count} 次', '{count} times'),
timesCall: _('{count} 次调用', '{count} calls', '{count} 次呼叫'),
unknownModel: _('未知', 'Unknown'),
unknownProvider: _('未知', 'Unknown'),
}