mirror of
https://github.com/qingchencloud/clawpanel.git
synced 2026-05-31 05:10:14 +08:00
feat: new pages + dashboard enhancements + backend improvements
New pages: - Plugin Hub: grid cards, search, install/toggle/enable plugins - Route Map: SVG visualization of channels→agents bindings with legends - Diagnose: gateway connectivity diagnosis with step-by-step checks Dashboard enhancements: - WebSocket status indicator (connected/handshaking/reconnecting/disconnected) - Connected channels overview with platform icons - Colored log level badges (ERROR/WARN/INFO/DEBUG) with timestamps - Channels data loading in dashboard secondary fetch Splash screen: - Multi-stage boot detection (JS not loaded vs boot slow vs timeout) - 15s: WebView2/resource load failure - 20s: "initializing..." hint with elapsed counter - 90s: true timeout error Backend (Rust): - diagnose.rs: gateway connectivity diagnosis command - messaging.rs: plugin management commands - service.rs: improvements - lib.rs: register new commands Frontend libs: - feature-gates.js: feature flag system - ws-client.js: reconnect state tracking - tauri-api.js: new API bindings - model-presets.js: provider fixes - Remove gateway-guardian-policy.js (unused) Dev API (scripts/dev-api.js): - list_all_plugins, toggle_plugin, install_plugin handlers - probe_gateway_port, diagnose_gateway_connection handlers i18n: dashboard, sidebar, diagnose, extensions, routeMap locale modules CSS: plugin-hub cards, route-map SVG styles
This commit is contained in:
@@ -109,4 +109,9 @@ export default {
|
||||
startSent: _('已发送启动命令', 'Start command sent', '已發送啟動指令', '起動コマンド送信済み', '시작 명령 전송됨'),
|
||||
foreignGatewayBanner: _('检测到外部 Gateway 正在运行,当前面板无法管理', 'An external Gateway is running, not managed by this panel', '偵測到外部 Gateway 正在執行,目前面板無法管理', '外部 Gateway が実行中です。このパネルでは管理できません', '외부 Gateway가 실행 중이며, 이 패널에서 관리할 수 없습니다', 'Đã phát hiện Gateway bên ngoài đang chạy, bảng điều khiển này không thể quản lý', 'Se detectó un Gateway externo en ejecución, no gestionado por este panel', 'Um Gateway externo está em execução, não gerenciado por este painel', 'Обнаружен внешний Gateway, не управляемый этой панелью', 'Un Gateway externe est en cours d\'exécution, non géré par ce panneau', 'Ein externer Gateway läuft, der nicht von diesem Panel verwaltet wird'),
|
||||
claimGateway: _('认领 Gateway', 'Claim Gateway', '認領 Gateway', 'Gateway を引き取る', 'Gateway 인수', 'Nhận Gateway', 'Reclamar Gateway', 'Reivindicar Gateway', 'Принять Gateway', 'Revendiquer Gateway', 'Gateway übernehmen'),
|
||||
wsConnected: _('已连接', 'Connected', '已連線', '接続済み', '연결됨', 'Đã kết nối', 'Conectado', 'Conectado', 'Подключено', 'Connecté', 'Verbunden'),
|
||||
wsDisconnected: _('未连接', 'Disconnected', '未連線', '未接続', '연결 안됨', 'Chưa kết nối', 'Desconectado', 'Desconectado', 'Отключено', 'Déconnecté', 'Getrennt'),
|
||||
wsHandshaking: _('握手中', 'Handshaking', '握手中', 'ハンドシェイク中', '핸드셰이크 중', 'Đang bắt tay', 'Negociando', 'Negociando', 'Рукопожатие', 'Négociation', 'Handshake'),
|
||||
wsReconnecting: _('重连中', 'Reconnecting', '重連中', '再接続中', '재연결 중', 'Đang kết nối lại', 'Reconectando', 'Reconectando', 'Переподключение', 'Reconnexion', 'Neuverbindung'),
|
||||
connectedChannels: _('消息渠道', 'Channels', '訊息渠道', 'チャネル', '메시지 채널', 'Kênh nhắn tin', 'Canales', 'Canais', 'Каналы', 'Canaux', 'Kanäle'),
|
||||
}
|
||||
|
||||
25
src/locales/modules/diagnose.js
Normal file
25
src/locales/modules/diagnose.js
Normal file
@@ -0,0 +1,25 @@
|
||||
import { _ } from '../helper.js'
|
||||
|
||||
export default {
|
||||
title: _('连接诊断', 'Connection Diagnosis', '連線診斷', '接続診断', '연결 진단', 'Chẩn đoán kết nối', 'Diagnóstico de conexión', 'Diagnóstico de conexão', 'Диагностика подключения', 'Diagnostic de connexion', 'Verbindungsdiagnose'),
|
||||
desc: _('检测 Gateway 连接各环节是否正常', 'Check Gateway connection health step by step', '檢測 Gateway 連線各環節是否正常', 'Gateway 接続の各ステップを確認', 'Gateway 연결 상태를 단계별로 확인', 'Kiểm tra kết nối Gateway từng bước', 'Verificar estado de conexión Gateway', 'Verificar conexão do Gateway passo a passo', 'Проверка подключения к Gateway пошагово', 'Vérifier la connexion Gateway étape par étape', 'Gateway-Verbindung schrittweise prüfen'),
|
||||
runDiagnose: _('开始诊断', 'Run Diagnosis', '開始診斷', '診断開始', '진단 시작', 'Bắt đầu chẩn đoán', 'Iniciar diagnóstico', 'Iniciar diagnóstico', 'Запустить диагностику', 'Lancer le diagnostic', 'Diagnose starten'),
|
||||
running: _('正在诊断...', 'Diagnosing...', '正在診斷...', '診断中...', '진단 중...', 'Đang chẩn đoán...', 'Diagnosticando...', 'Diagnosticando...', 'Диагностика...', 'Diagnostic en cours...', 'Diagnose läuft...'),
|
||||
passed: _('通过', 'Passed', '通過', '合格', '통과', 'Đạt', 'Aprobado', 'Aprovado', 'Пройден', 'Réussi', 'Bestanden'),
|
||||
failed: _('未通过', 'Failed', '未通過', '不合格', '실패', 'Thất bại', 'Fallido', 'Falhou', 'Не пройден', 'Échoué', 'Fehlgeschlagen'),
|
||||
allPassed: _('✅ 所有检查项通过', '✅ All checks passed', '✅ 所有檢查項通過', '✅ すべてのチェックに合格', '✅ 모든 검사 통과', '✅ Tất cả kiểm tra đạt', '✅ Todas las verificaciones pasaron', '✅ Todas as verificações passaram', '✅ Все проверки пройдены', '✅ Tous les contrôles réussis', '✅ Alle Prüfungen bestanden'),
|
||||
envInfo: _('环境信息', 'Environment Info', '環境資訊', '環境情報', '환경 정보', 'Thông tin môi trường', 'Info del entorno', 'Info do ambiente', 'Информация об окружении', 'Info environnement', 'Umgebungsinfo'),
|
||||
openclawDir: _('配置目录', 'Config Directory', '配置目錄', '設定ディレクトリ', '설정 디렉토리'),
|
||||
port: _('端口', 'Port', '連接埠', 'ポート', '포트'),
|
||||
authMode: _('认证模式', 'Auth Mode', '認證模式', '認証モード', '인증 모드'),
|
||||
deviceKey: _('设备密钥', 'Device Key', '裝置金鑰', 'デバイスキー', '장치 키'),
|
||||
errLogExcerpt: _('错误日志摘要', 'Error Log Excerpt', '錯誤日誌摘要', 'エラーログ抜粋', '오류 로그 요약'),
|
||||
stepConfig: _('配置文件', 'Config File', '配置檔案', '設定ファイル', '설정 파일'),
|
||||
stepDeviceKey: _('设备密钥', 'Device Key', '裝置金鑰', 'デバイスキー', '장치 키'),
|
||||
stepOrigins: _('允许来源', 'Allowed Origins', '允許來源', '許可オリジン', '허용 출처'),
|
||||
stepTcp: _('TCP 端口', 'TCP Port', 'TCP 連接埠', 'TCP ポート', 'TCP 포트'),
|
||||
stepHttp: _('HTTP 健康', 'HTTP Health', 'HTTP 健康', 'HTTP ヘルス', 'HTTP 상태'),
|
||||
stepErrLog: _('错误日志', 'Error Log', '錯誤日誌', 'エラーログ', '오류 로그'),
|
||||
diagnoseFailed: _('诊断执行失败', 'Diagnosis failed', '診斷執行失敗', '診断の実行に失敗', '진단 실행 실패'),
|
||||
noData: _('尚未运行诊断,点击上方按钮开始', 'No diagnosis yet, click the button above to start', '尚未執行診斷,點擊上方按鈕開始', 'まだ診断を実行していません。上のボタンをクリックして開始してください', '아직 진단을 실행하지 않았습니다. 위 버튼을 클릭하여 시작하세요'),
|
||||
}
|
||||
36
src/locales/modules/extensions.js
Normal file
36
src/locales/modules/extensions.js
Normal file
@@ -0,0 +1,36 @@
|
||||
import { _ } from '../helper.js'
|
||||
|
||||
export default {
|
||||
title: _('扩展中心', 'Extension Center', '擴充中心', '拡張センター', '확장 센터', 'Trung tâm mở rộng', 'Centro de extensiones', 'Centro de extensões', 'Центр расширений', 'Centre d\'extensions', 'Erweiterungszentrum'),
|
||||
subtitle: _('管理已安装的扩展插件,查看状态与配置', 'Manage installed extensions, view status and configuration', '管理已安裝的擴充插件,查看狀態與設定', 'インストール済み拡張の管理', '설치된 확장 관리', 'Quản lý tiện ích mở rộng', 'Administrar extensiones instaladas', 'Gerenciar extensões instaladas', 'Управление расширениями', 'Gérer les extensions installées', 'Installierte Erweiterungen verwalten'),
|
||||
refresh: _('刷新', 'Refresh', '重新整理', '更新', '새로고침', 'Làm mới', 'Actualizar', 'Atualizar', 'Обновить', 'Actualiser', 'Aktualisieren'),
|
||||
loading: _('正在加载扩展列表…', 'Loading extensions…', '正在載入擴充列表…', '拡張を読み込み中…', '확장 로딩 중…', 'Đang tải…', 'Cargando…', 'Carregando…', 'Загрузка…', 'Chargement…', 'Laden…'),
|
||||
noPlugins: _('暂无已安装的扩展', 'No extensions installed', '暫無已安裝的擴充', 'インストール済み拡張なし', '설치된 확장 없음', 'Chưa có tiện ích', 'Sin extensiones instaladas', 'Sem extensões instaladas', 'Нет расширений', 'Aucune extension', 'Keine Erweiterungen'),
|
||||
installed: _('已安装', 'Installed', '已安裝', 'インストール済み', '설치됨', 'Đã cài đặt', 'Instalado', 'Instalado', 'Установлено', 'Installé', 'Installiert'),
|
||||
notInstalled: _('未安装', 'Not Installed', '未安裝', '未インストール', '미설치', 'Chưa cài đặt', 'No instalado', 'Não instalado', 'Не установлено', 'Non installé', 'Nicht installiert'),
|
||||
enabled: _('已启用', 'Enabled', '已啟用', '有効', '활성화', 'Đã bật', 'Habilitado', 'Habilitado', 'Включено', 'Activé', 'Aktiviert'),
|
||||
disabled: _('已禁用', 'Disabled', '已停用', '無効', '비활성화', 'Đã tắt', 'Deshabilitado', 'Desabilitado', 'Отключено', 'Désactivé', 'Deaktiviert'),
|
||||
builtin: _('内置', 'Built-in', '內建', 'ビルトイン', '내장', 'Tích hợp', 'Integrado', 'Integrado', 'Встроенное', 'Intégré', 'Eingebaut'),
|
||||
version: _('版本', 'Version', '版本', 'バージョン', '버전', 'Phiên bản', 'Versión', 'Versão', 'Версия', 'Version', 'Version'),
|
||||
noDescription: _('暂无描述', 'No description', '暫無描述', '説明なし', '설명 없음', 'Không có mô tả', 'Sin descripción', 'Sem descrição', 'Нет описания', 'Aucune description', 'Keine Beschreibung'),
|
||||
statsInstalled: _('已安装', 'Installed', '已安裝', 'インストール済み', '설치됨', 'Đã cài đặt', 'Instaladas', 'Instaladas', 'Установлено', 'Installées', 'Installiert'),
|
||||
statsEnabled: _('已启用', 'Enabled', '已啟用', '有効', '활성화', 'Đã bật', 'Habilitadas', 'Habilitadas', 'Включено', 'Activées', 'Aktiviert'),
|
||||
statsBuiltin: _('内置', 'Built-in', '內建', 'ビルトイン', '내장', 'Tích hợp', 'Integradas', 'Integradas', 'Встроенных', 'Intégrées', 'Eingebaut'),
|
||||
configTitle: _('扩展配置', 'Extension Config', '擴充設定', '拡張設定', '확장 설정', 'Cấu hình', 'Configuración', 'Configuração', 'Конфигурация', 'Configuration', 'Konfiguration'),
|
||||
goToChannels: _('前往渠道配置', 'Go to Channels', '前往頻道設定', 'チャネル設定へ', '채널 설정으로 이동', 'Đi đến kênh', 'Ir a canales', 'Ir para canais', 'К каналам', 'Aller aux canaux', 'Zu Kanälen'),
|
||||
enable: _('启用', 'Enable', '啟用', '有効化', '활성화', 'Bật', 'Habilitar', 'Habilitar', 'Включить', 'Activer', 'Aktivieren'),
|
||||
disable: _('禁用', 'Disable', '停用', '無効化', '비활성화', 'Tắt', 'Deshabilitar', 'Desabilitar', 'Отключить', 'Désactiver', 'Deaktivieren'),
|
||||
toggleSuccess: _('插件状态已更新', 'Plugin status updated', '插件狀態已更新', 'プラグイン状態が更新されました', '플러그인 상태 업데이트됨', 'Đã cập nhật trạng thái', 'Estado del plugin actualizado', 'Status do plugin atualizado', 'Статус плагина обновлен', 'État du plugin mis à jour', 'Plugin-Status aktualisiert'),
|
||||
toggleFailed: _('操作失败', 'Operation failed', '操作失敗', '操作失敗', '작업 실㊌', 'Thất bại', 'Operación fallida', 'Operação falhou', 'Операция не удалась', 'Échec de l\'opération', 'Vorgang fehlgeschlagen'),
|
||||
installTitle: _('安装新插件', 'Install Plugin', '安裝新插件', '新しいプラグインをインストール', '새 플러그인 설치', 'Cài đặt plugin mới', 'Instalar nuevo plugin', 'Instalar novo plugin', 'Установить плагин', 'Installer un plugin', 'Plugin installieren'),
|
||||
installPlaceholder: _('输入 npm 包名,如 @openclaw/feishu', 'Enter npm package name, e.g. @openclaw/feishu', '輸入 npm 包名,如 @openclaw/feishu'),
|
||||
installBtn: _('安装', 'Install', '安裝', 'インストール', '설치', 'Cài đặt', 'Instalar', 'Instalar', 'Установить', 'Installer', 'Installieren'),
|
||||
installing: _('安装中...', 'Installing...', '安裝中...', 'インストール中...', '설치 중...', 'Đang cài đặt...', 'Instalando...', 'Instalando...', 'Установка...', 'Installation...', 'Installation...'),
|
||||
installSuccess: _('插件安装成功', 'Plugin installed successfully', '插件安裝成功', 'プラグインがインストールされました', '플러그인 설치 완료', 'Cài đặt thành công', 'Plugin instalado correctamente', 'Plugin instalado com sucesso', 'Плагин установлен', 'Plugin installé', 'Plugin installiert'),
|
||||
installFailed: _('插件安装失败', 'Plugin installation failed', '插件安裝失敗', 'インストール失敗', '설치 실패', 'Cài đặt thất bại', 'Instalación fallida', 'Instalação falhou', 'Ошибка установки', 'Échec de l\'installation', 'Installation fehlgeschlagen'),
|
||||
restartHint: _('插件状态变更后,建议重启 Gateway 生效', 'After changing plugin status, restart Gateway to take effect', '插件狀態變更後,建議重啟 Gateway 生效'),
|
||||
searchPlaceholder: _('搜索插件...', 'Search plugins...', '搜尋插件...', 'プラグインを検索...', '플러그인 검색...', 'Tìm plugin...', 'Buscar plugins...', 'Buscar plugins...', 'Поиск плагинов...', 'Rechercher des plugins...', 'Plugins suchen...'),
|
||||
noSearchResults: _('未找到匹配「{query}」的插件', 'No plugins matching "{query}"', '未找到匹配「{query}」的插件', '「{query}」に一致するプラグインなし', '"{query}"와 일치하는 플러그인 없음', 'Không tìm thấy plugin "{query}"', 'No se encontraron plugins "{query}"', 'Nenhum plugin encontrado "{query}"', 'Плагины по запросу «{query}» не найдены', 'Aucun plugin correspondant à « {query} »', 'Keine Plugins für „{query}" gefunden'),
|
||||
showDetail: _('查看详情', 'Show details', '查看詳情', '詳細を表示', '상세 보기', 'Xem chi tiết', 'Ver detalles', 'Ver detalhes', 'Подробнее', 'Voir les détails', 'Details anzeigen'),
|
||||
hideDetail: _('收起', 'Hide', '收起', '閉じる', '닫기', 'Ẩn', 'Ocultar', 'Ocultar', 'Скрыть', 'Masquer', 'Ausblenden'),
|
||||
}
|
||||
26
src/locales/modules/routeMap.js
Normal file
26
src/locales/modules/routeMap.js
Normal file
@@ -0,0 +1,26 @@
|
||||
import { _ } from '../helper.js'
|
||||
|
||||
export default {
|
||||
title: _('路由地图', 'Route Map', '路由地圖', 'ルートマップ', '라우트 맵', 'Bản đồ tuyến', 'Mapa de rutas', 'Mapa de rotas', 'Карта маршрутов', 'Carte des routes', 'Routenkarte'),
|
||||
subtitle: _('可视化查看渠道 → 绑定 → 智能体的全局路由关系', 'Visualize Channel → Binding → Agent routing relationships', '可視化查看頻道 → 綁定 → 智能體的路由關係', 'チャンネル → バインディング → エージェントのルーティング関係を視覚化', '채널 → 바인딩 → 에이전트 라우팅 관계 시각화', 'Trực quan hóa kênh → ràng buộc → tác nhân', 'Visualizar relaciones de enrutamiento', 'Visualizar relações de roteamento', 'Визуализация маршрутов', 'Visualiser les relations de routage', 'Routing-Beziehungen visualisieren'),
|
||||
refresh: _('刷新', 'Refresh', '重新整理', '更新', '새로고침', 'Làm mới', 'Actualizar', 'Atualizar', 'Обновить', 'Actualiser', 'Aktualisieren'),
|
||||
loading: _('正在加载路由数据…', 'Loading route data…', '正在載入路由資料…', 'ルートデータ読み込み中…', '라우트 데이터 로딩 중…', 'Đang tải…', 'Cargando…', 'Carregando…', 'Загрузка…', 'Chargement…', 'Laden…'),
|
||||
noData: _('暂无路由数据,请先配置 Agent 和消息渠道', 'No route data. Please configure Agents and Channels first.', '暫無路由資料,請先設定 Agent 和訊息頻道', 'ルートデータがありません', '라우트 데이터 없음', 'Chưa có dữ liệu', 'Sin datos', 'Sem dados', 'Нет данных', 'Aucune donnée', 'Keine Daten'),
|
||||
channels: _('消息渠道', 'Channels', '訊息頻道', 'チャンネル', '채널', 'Kênh', 'Canales', 'Canais', 'Каналы', 'Canaux', 'Kanäle'),
|
||||
agents: _('智能体', 'Agents', '智能體', 'エージェント', '에이전트', 'Tác nhân', 'Agentes', 'Agentes', 'Агенты', 'Agents', 'Agenten'),
|
||||
bindings: _('路由规则', 'Bindings', '路由規則', 'バインディング', '바인딩', 'Ràng buộc', 'Vínculos', 'Vínculos', 'Привязки', 'Liaisons', 'Bindungen'),
|
||||
defaultAgent: _('默认 Agent', 'Default Agent', '預設 Agent', 'デフォルト Agent', '기본 Agent', 'Agent mặc định', 'Agente predeterminado', 'Agente padrão', 'Агент по умолчанию', 'Agent par défaut', 'Standard-Agent'),
|
||||
enabled: _('已启用', 'Enabled', '已啟用', '有効', '활성화됨', 'Đã bật', 'Habilitado', 'Habilitado', 'Включено', 'Activé', 'Aktiviert'),
|
||||
disabled: _('已禁用', 'Disabled', '已停用', '無効', '비활성화됨', 'Đã tắt', 'Deshabilitado', 'Desabilitado', 'Отключено', 'Désactivé', 'Deaktiviert'),
|
||||
matchAll: _('匹配所有', 'Match All', '匹配所有', 'すべて一致', '모두 일치', 'Khớp tất cả', 'Coincidir todo', 'Corresponder tudo', 'Все совпадения', 'Tout', 'Alle'),
|
||||
peer: _('指定对象', 'Specific Peer', '指定對象', '指定ピア', '특정 피어', 'Đối tượng', 'Par específico', 'Par específico', 'Конкретный пир', 'Pair spécifique', 'Spezifischer Peer'),
|
||||
account: _('账号', 'Account', '帳號', 'アカウント', '계정', 'Tài khoản', 'Cuenta', 'Conta', 'Аккаунт', 'Compte', 'Konto'),
|
||||
statsAgents: _('智能体', 'Agents', '智能體', 'エージェント', '에이전트', 'Tác nhân', 'Agentes', 'Agentes', 'Агенты', 'Agents', 'Agenten'),
|
||||
statsChannels: _('渠道', 'Channels', '頻道', 'チャンネル', '채널', 'Kênh', 'Canales', 'Canais', 'Каналы', 'Canaux', 'Kanäle'),
|
||||
statsBindings: _('绑定', 'Bindings', '綁定', 'バインディング', '바인딩', 'Ràng buộc', 'Vínculos', 'Vínculos', 'Привязки', 'Liaisons', 'Bindungen'),
|
||||
subAgentRelations: _('子代理关系', 'Sub-agent Relations', '子代理關係', 'サブエージェント関係', '서브 에이전트 관계', 'Quan hệ phụ', 'Relaciones de sub-agente', 'Relações de sub-agente', 'Связи субагентов', 'Relations sous-agent', 'Sub-Agent-Beziehungen'),
|
||||
subAgentCall: _('子代理调用', 'Sub-agent Call', '子代理調用', 'サブエージェント呼出', '서브 에이전트 호출', 'Gọi phụ', 'Llamada sub-agente', 'Chamada sub-agente', 'Вызов субагента', 'Appel sous-agent', 'Sub-Agent-Aufruf'),
|
||||
legendBinding: _('显式绑定', 'Explicit Binding', '顯式綁定', '明示的バインド', '명시적 바인딩', 'Ràng buộc rõ ràng', 'Vinculación explícita', 'Vinculação explícita', 'Явная привязка', 'Liaison explicite', 'Explizite Bindung'),
|
||||
legendDefault: _('默认路由', 'Default Route', '預設路由', 'デフォルトルート', '기본 라우트', 'Tuyến mặc định', 'Ruta predeterminada', 'Rota padrão', 'Маршрут по умолчанию', 'Route par défaut', 'Standardroute'),
|
||||
clickToNavigate: _('点击卡片跳转到对应配置页', 'Click card to navigate to config page', '點擊卡片跳轉到對應設定頁', 'カードをクリックして設定ページへ', '카드를 클릭하여 설정 페이지로 이동', 'Nhấp để chuyển đến trang cấu hình', 'Haga clic para ir a la configuración', 'Clique para ir à configuração', 'Нажмите для перехода', 'Cliquez pour accéder', 'Klicken Sie zur Konfiguration'),
|
||||
}
|
||||
@@ -25,8 +25,12 @@ export default {
|
||||
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'),
|
||||
pluginHub: _('插件中心', 'Plugin Hub', '插件中心', 'プラグインハブ', '플러그인 허브', 'Trung tâm plugin', 'Centro de plugins', 'Centro de plugins', 'Центр плагинов', 'Centre de plugins', 'Plugin-Hub'),
|
||||
settings: _('面板设置', 'Settings', '面板設定', 'パネル設定', '패널 설정', 'Cài đặt', 'Configuración', 'Configurações', 'Настройки', 'Paramètres', 'Einstellungen'),
|
||||
diagnose: _('连接诊断', 'Connection Diagnosis', '連線診斷', '接続診断', '연결 진단', 'Chẩn đoán kết nối', 'Diagnóstico de conexión', 'Diagnóstico de conexão', 'Диагностика подключения', 'Diagnostic de connexion', 'Verbindungsdiagnose'),
|
||||
chatDebug: _('系统诊断', 'Diagnostics', '系統诊斷', 'システム診断', '시스템 진단', 'Chẩn đoán', 'Diagnóstico', 'Diagnóstico', 'Диагностика', 'Diagnostic', 'Diagnose'),
|
||||
checkRepair: _('检测与修复', 'Check & Repair', '檢測與修復', '検出と修復', '검사 및 수리', 'Kiểm tra & Sửa chữa', 'Verificar y reparar', 'Verificar e reparar', 'Проверка и ремонт', 'Vérifier et réparer', 'Prüfen & Reparieren'),
|
||||
routeMap: _('路由地图', 'Route Map', '路由地圖', 'ルートマップ', '라우트 맵', 'Bản đồ tuyến', 'Mapa de rutas', 'Mapa de rotas', 'Карта маршрутов', 'Carte des routes', 'Routenkarte'),
|
||||
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'),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user