feat(webui): redesign settings and BYOK configuration

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Xubin Ren
2026-05-08 23:48:01 +08:00
committed by Xubin Ren
co-authored by Cursor
parent 451d740849
commit 2cc32ca07c
25 changed files with 1679 additions and 216 deletions
+71 -1
View File
@@ -24,7 +24,8 @@
"system": {
"section": "System",
"restartHint": "Restart nanobot to apply runtime changes.",
"restart": "Restart nanobot"
"restart": "Restart nanobot",
"restarting": "Restarting..."
},
"restart": {
"completed": "Restart completed in {{seconds}}s."
@@ -56,6 +57,75 @@
"ariaLabel": "Change language"
}
},
"settings": {
"backToChat": "Back to chat",
"sidebar": {
"title": "Settings",
"ariaLabel": "Settings sections"
},
"nav": {
"general": "General",
"byok": "BYOK"
},
"sections": {
"interface": "Interface",
"ai": "AI",
"system": "System"
},
"rows": {
"theme": "Theme",
"language": "Language",
"provider": "Provider",
"model": "Model",
"restart": "Restart nanobot",
"configPath": "Config path"
},
"help": {
"theme": "Switch between light and dark appearance.",
"language": "Choose the language used by the WebUI.",
"provider": "Select the provider that should serve new model requests.",
"model": "Set the default model name used by nanobot.",
"configPath": "The gateway configuration file currently in use."
},
"values": {
"light": "Light",
"dark": "Dark",
"notAvailable": "Not available"
},
"status": {
"loading": "Loading settings...",
"loadError": "Could not load settings",
"unsaved": "Unsaved changes.",
"savedRestart": "Saved. Restart nanobot to apply."
},
"actions": {
"save": "Save",
"saving": "Saving",
"edit": "Edit",
"cancel": "Cancel"
},
"byok": {
"description": "Bring your own provider keys. Nanobot reads these values from the current config and only configured providers can be selected in General.",
"configured": "Configured",
"notConfigured": "Not configured",
"configuredSection": "Configured",
"notConfiguredSection": "Not configured",
"showMore": "Show {{count}} more",
"showLess": "Show fewer",
"apiKey": "API key",
"apiBase": "API base",
"apiKeyPlaceholder": "Enter API key",
"apiKeyConfiguredPlaceholder": "Leave blank to keep the current key",
"configuredKeyHint": "Configured key",
"apiBasePlaceholder": "Use provider default",
"apiKeyRequired": "API key is required to configure this provider.",
"showApiKey": "Show API key",
"hideApiKey": "Hide API key",
"noConfiguredProviders": "No configured providers",
"configureFirst": "Configure a provider in BYOK first.",
"openByok": "Open BYOK"
}
},
"chat": {
"fallbackTitle": "Chat {{id}}",
"loading": "Loading…",
+72 -1
View File
@@ -12,7 +12,8 @@
"system": {
"section": "Sistema",
"restartHint": "Reinicia nanobot para aplicar los cambios de ejecución.",
"restart": "Reiniciar nanobot"
"restart": "Reiniciar nanobot",
"restarting": "Reiniciando..."
},
"restart": {
"completed": "Reinicio completado en {{seconds}} s."
@@ -31,11 +32,81 @@
"newChat": "Nuevo chat",
"recent": "Recientes",
"refreshSessions": "Actualizar sesiones",
"settings": "Configuración",
"language": {
"label": "Idioma",
"ariaLabel": "Cambiar idioma"
}
},
"settings": {
"backToChat": "Volver al chat",
"sidebar": {
"title": "Configuración",
"ariaLabel": "Secciones de configuración"
},
"nav": {
"general": "General",
"byok": "BYOK"
},
"sections": {
"interface": "Interfaz",
"ai": "IA",
"system": "Sistema"
},
"rows": {
"theme": "Tema",
"language": "Idioma",
"provider": "Proveedor",
"model": "Modelo",
"restart": "Reiniciar nanobot",
"configPath": "Ruta de configuración"
},
"help": {
"theme": "Cambia entre apariencia clara y oscura.",
"language": "Elige el idioma usado por la WebUI.",
"provider": "Selecciona el proveedor para nuevas solicitudes de modelo.",
"model": "Define el nombre del modelo predeterminado que usa nanobot.",
"configPath": "El archivo de configuración que usa actualmente el gateway."
},
"values": {
"light": "Claro",
"dark": "Oscuro",
"notAvailable": "No disponible"
},
"status": {
"loading": "Cargando configuración...",
"loadError": "No se pudo cargar la configuración",
"unsaved": "Hay cambios sin guardar.",
"savedRestart": "Guardado. Reinicia nanobot para aplicar."
},
"actions": {
"save": "Guardar",
"saving": "Guardando",
"edit": "Editar",
"cancel": "Cancelar"
},
"byok": {
"description": "Usa tus propias claves de proveedor. Nanobot lee estos valores desde la configuración actual, y solo los proveedores configurados se pueden elegir en General.",
"configured": "Configurado",
"notConfigured": "Sin configurar",
"configuredSection": "Configurados",
"notConfiguredSection": "Sin configurar",
"showMore": "Mostrar {{count}} más",
"showLess": "Mostrar menos",
"apiKey": "API key",
"apiBase": "API base",
"apiKeyPlaceholder": "Introduce la API key",
"apiKeyConfiguredPlaceholder": "Deja vacío para conservar la key actual",
"configuredKeyHint": "Key configurada",
"apiBasePlaceholder": "Usar el valor predeterminado del proveedor",
"apiKeyRequired": "Se requiere una API key para configurar este proveedor.",
"showApiKey": "Mostrar API key",
"hideApiKey": "Ocultar API key",
"noConfiguredProviders": "No hay proveedores configurados",
"configureFirst": "Configura primero un proveedor en BYOK.",
"openByok": "Abrir BYOK"
}
},
"chat": {
"fallbackTitle": "Chat {{id}}",
"loading": "Cargando…",
+72 -1
View File
@@ -12,7 +12,8 @@
"system": {
"section": "Système",
"restartHint": "Redémarrez nanobot pour appliquer les changements dexécution.",
"restart": "Redémarrer nanobot"
"restart": "Redémarrer nanobot",
"restarting": "Redémarrage..."
},
"restart": {
"completed": "Redémarrage terminé en {{seconds}} s."
@@ -31,11 +32,81 @@
"newChat": "Nouvelle discussion",
"recent": "Récentes",
"refreshSessions": "Actualiser les sessions",
"settings": "Paramètres",
"language": {
"label": "Langue",
"ariaLabel": "Changer de langue"
}
},
"settings": {
"backToChat": "Retour à la discussion",
"sidebar": {
"title": "Paramètres",
"ariaLabel": "Sections des paramètres"
},
"nav": {
"general": "Général",
"byok": "BYOK"
},
"sections": {
"interface": "Interface",
"ai": "IA",
"system": "Système"
},
"rows": {
"theme": "Thème",
"language": "Langue",
"provider": "Fournisseur",
"model": "Modèle",
"restart": "Redémarrer nanobot",
"configPath": "Chemin de configuration"
},
"help": {
"theme": "Basculer entre les apparences claire et sombre.",
"language": "Choisissez la langue utilisée par le WebUI.",
"provider": "Sélectionnez le fournisseur des nouvelles requêtes de modèle.",
"model": "Définissez le nom du modèle par défaut utilisé par nanobot.",
"configPath": "Le fichier de configuration actuellement utilisé par la passerelle."
},
"values": {
"light": "Clair",
"dark": "Sombre",
"notAvailable": "Indisponible"
},
"status": {
"loading": "Chargement des paramètres...",
"loadError": "Impossible de charger les paramètres",
"unsaved": "Modifications non enregistrées.",
"savedRestart": "Enregistré. Redémarrez nanobot pour appliquer."
},
"actions": {
"save": "Enregistrer",
"saving": "Enregistrement",
"edit": "Modifier",
"cancel": "Annuler"
},
"byok": {
"description": "Utilisez vos propres clés de fournisseur. Nanobot lit ces valeurs depuis la configuration actuelle, et seuls les fournisseurs configurés peuvent être sélectionnés dans Général.",
"configured": "Configuré",
"notConfigured": "Non configuré",
"configuredSection": "Configurés",
"notConfiguredSection": "Non configurés",
"showMore": "Afficher {{count}} de plus",
"showLess": "Afficher moins",
"apiKey": "API key",
"apiBase": "API base",
"apiKeyPlaceholder": "Saisir l'API key",
"apiKeyConfiguredPlaceholder": "Laisser vide pour conserver la key actuelle",
"configuredKeyHint": "Key configurée",
"apiBasePlaceholder": "Utiliser la valeur par défaut du fournisseur",
"apiKeyRequired": "Une API key est requise pour configurer ce fournisseur.",
"showApiKey": "Afficher l'API key",
"hideApiKey": "Masquer l'API key",
"noConfiguredProviders": "Aucun fournisseur configuré",
"configureFirst": "Configurez d'abord un fournisseur dans BYOK.",
"openByok": "Ouvrir BYOK"
}
},
"chat": {
"fallbackTitle": "Discussion {{id}}",
"loading": "Chargement…",
+72 -1
View File
@@ -12,7 +12,8 @@
"system": {
"section": "Sistem",
"restartHint": "Mulai ulang nanobot untuk menerapkan perubahan runtime.",
"restart": "Mulai ulang nanobot"
"restart": "Mulai ulang nanobot",
"restarting": "Memulai ulang..."
},
"restart": {
"completed": "Mulai ulang selesai dalam {{seconds}} dtk."
@@ -31,11 +32,81 @@
"newChat": "Obrolan baru",
"recent": "Terbaru",
"refreshSessions": "Segarkan sesi",
"settings": "Pengaturan",
"language": {
"label": "Bahasa",
"ariaLabel": "Ganti bahasa"
}
},
"settings": {
"backToChat": "Kembali ke obrolan",
"sidebar": {
"title": "Pengaturan",
"ariaLabel": "Bagian pengaturan"
},
"nav": {
"general": "Umum",
"byok": "BYOK"
},
"sections": {
"interface": "Antarmuka",
"ai": "AI",
"system": "Sistem"
},
"rows": {
"theme": "Tema",
"language": "Bahasa",
"provider": "Penyedia",
"model": "Model",
"restart": "Mulai ulang nanobot",
"configPath": "Path konfigurasi"
},
"help": {
"theme": "Beralih antara tampilan terang dan gelap.",
"language": "Pilih bahasa yang digunakan WebUI.",
"provider": "Pilih penyedia untuk permintaan model baru.",
"model": "Atur nama model default yang digunakan nanobot.",
"configPath": "File konfigurasi gateway yang sedang digunakan."
},
"values": {
"light": "Terang",
"dark": "Gelap",
"notAvailable": "Tidak tersedia"
},
"status": {
"loading": "Memuat pengaturan...",
"loadError": "Tidak dapat memuat pengaturan",
"unsaved": "Ada perubahan yang belum disimpan.",
"savedRestart": "Tersimpan. Mulai ulang nanobot untuk menerapkan."
},
"actions": {
"save": "Simpan",
"saving": "Menyimpan",
"edit": "Edit",
"cancel": "Batal"
},
"byok": {
"description": "Gunakan kunci provider Anda sendiri. Nanobot membaca nilai ini dari config saat ini, dan hanya provider yang sudah dikonfigurasi yang bisa dipilih di Umum.",
"configured": "Terkonfigurasi",
"notConfigured": "Belum dikonfigurasi",
"configuredSection": "Terkonfigurasi",
"notConfiguredSection": "Belum dikonfigurasi",
"showMore": "Tampilkan {{count}} lagi",
"showLess": "Tampilkan lebih sedikit",
"apiKey": "API key",
"apiBase": "API base",
"apiKeyPlaceholder": "Masukkan API key",
"apiKeyConfiguredPlaceholder": "Kosongkan untuk mempertahankan key saat ini",
"configuredKeyHint": "Key terkonfigurasi",
"apiBasePlaceholder": "Gunakan default provider",
"apiKeyRequired": "API key diperlukan untuk mengonfigurasi provider ini.",
"showApiKey": "Tampilkan API key",
"hideApiKey": "Sembunyikan API key",
"noConfiguredProviders": "Belum ada provider terkonfigurasi",
"configureFirst": "Konfigurasikan provider di BYOK terlebih dahulu.",
"openByok": "Buka BYOK"
}
},
"chat": {
"fallbackTitle": "Obrolan {{id}}",
"loading": "Memuat…",
+72 -1
View File
@@ -12,7 +12,8 @@
"system": {
"section": "システム",
"restartHint": "実行時の変更を適用するには nanobot を再起動します。",
"restart": "nanobot を再起動"
"restart": "nanobot を再起動",
"restarting": "再起動中..."
},
"restart": {
"completed": "{{seconds}} 秒で再起動が完了しました。"
@@ -31,11 +32,81 @@
"newChat": "新しいチャット",
"recent": "最近のチャット",
"refreshSessions": "セッションを更新",
"settings": "設定",
"language": {
"label": "言語",
"ariaLabel": "言語を変更"
}
},
"settings": {
"backToChat": "チャットに戻る",
"sidebar": {
"title": "設定",
"ariaLabel": "設定セクション"
},
"nav": {
"general": "一般",
"byok": "BYOK"
},
"sections": {
"interface": "インターフェース",
"ai": "AI",
"system": "システム"
},
"rows": {
"theme": "テーマ",
"language": "言語",
"provider": "プロバイダー",
"model": "モデル",
"restart": "nanobot を再起動",
"configPath": "設定パス"
},
"help": {
"theme": "ライト表示とダーク表示を切り替えます。",
"language": "WebUI で使用する言語を選択します。",
"provider": "新しいモデルリクエストに使うプロバイダーを選択します。",
"model": "nanobot が既定で使用するモデル名を設定します。",
"configPath": "現在ゲートウェイが使用している設定ファイルです。"
},
"values": {
"light": "ライト",
"dark": "ダーク",
"notAvailable": "利用不可"
},
"status": {
"loading": "設定を読み込んでいます...",
"loadError": "設定を読み込めませんでした",
"unsaved": "未保存の変更があります。",
"savedRestart": "保存しました。反映するには nanobot を再起動してください。"
},
"actions": {
"save": "保存",
"saving": "保存中",
"edit": "編集",
"cancel": "キャンセル"
},
"byok": {
"description": "自分の provider キーを使います。Nanobot は現在の config から値を読み込み、設定済みの provider だけを一般設定で選択できます。",
"configured": "設定済み",
"notConfigured": "未設定",
"configuredSection": "設定済み",
"notConfiguredSection": "未設定",
"showMore": "さらに {{count}} 件表示",
"showLess": "折りたたむ",
"apiKey": "API key",
"apiBase": "API base",
"apiKeyPlaceholder": "API key を入力",
"apiKeyConfiguredPlaceholder": "空欄のままなら現在の key を保持",
"configuredKeyHint": "設定済み key",
"apiBasePlaceholder": "provider の既定値を使用",
"apiKeyRequired": "この provider を設定するには API key が必要です。",
"showApiKey": "API key を表示",
"hideApiKey": "API key を隠す",
"noConfiguredProviders": "設定済み provider がありません",
"configureFirst": "先に BYOK で provider を設定してください。",
"openByok": "BYOK を開く"
}
},
"chat": {
"fallbackTitle": "チャット {{id}}",
"loading": "読み込み中…",
+72 -1
View File
@@ -12,7 +12,8 @@
"system": {
"section": "시스템",
"restartHint": "런타임 변경 사항을 적용하려면 nanobot을 다시 시작하세요.",
"restart": "nanobot 다시 시작"
"restart": "nanobot 다시 시작",
"restarting": "다시 시작 중..."
},
"restart": {
"completed": "{{seconds}}초 만에 다시 시작되었습니다."
@@ -31,11 +32,81 @@
"newChat": "새 채팅",
"recent": "최근 대화",
"refreshSessions": "세션 새로고침",
"settings": "설정",
"language": {
"label": "언어",
"ariaLabel": "언어 변경"
}
},
"settings": {
"backToChat": "채팅으로 돌아가기",
"sidebar": {
"title": "설정",
"ariaLabel": "설정 섹션"
},
"nav": {
"general": "일반",
"byok": "BYOK"
},
"sections": {
"interface": "인터페이스",
"ai": "AI",
"system": "시스템"
},
"rows": {
"theme": "테마",
"language": "언어",
"provider": "제공자",
"model": "모델",
"restart": "nanobot 재시작",
"configPath": "설정 경로"
},
"help": {
"theme": "밝은 모드와 어두운 모드를 전환합니다.",
"language": "WebUI에서 사용할 언어를 선택합니다.",
"provider": "새 모델 요청에 사용할 제공자를 선택합니다.",
"model": "nanobot이 기본으로 사용할 모델 이름을 설정합니다.",
"configPath": "현재 게이트웨이가 사용하는 설정 파일입니다."
},
"values": {
"light": "라이트",
"dark": "다크",
"notAvailable": "사용할 수 없음"
},
"status": {
"loading": "설정을 불러오는 중...",
"loadError": "설정을 불러올 수 없습니다",
"unsaved": "저장되지 않은 변경 사항이 있습니다.",
"savedRestart": "저장되었습니다. 적용하려면 nanobot을 재시작하세요."
},
"actions": {
"save": "저장",
"saving": "저장 중",
"edit": "편집",
"cancel": "취소"
},
"byok": {
"description": "직접 provider 키를 가져옵니다. Nanobot은 현재 config에서 값을 읽고, 설정된 provider만 일반 설정에서 선택할 수 있습니다.",
"configured": "설정됨",
"notConfigured": "설정 안 됨",
"configuredSection": "설정됨",
"notConfiguredSection": "설정 안 됨",
"showMore": "{{count}}개 더 보기",
"showLess": "접기",
"apiKey": "API key",
"apiBase": "API base",
"apiKeyPlaceholder": "API key 입력",
"apiKeyConfiguredPlaceholder": "비워 두면 현재 key 유지",
"configuredKeyHint": "설정된 key",
"apiBasePlaceholder": "provider 기본값 사용",
"apiKeyRequired": "이 provider를 설정하려면 API key가 필요합니다.",
"showApiKey": "API key 표시",
"hideApiKey": "API key 숨기기",
"noConfiguredProviders": "설정된 provider가 없습니다",
"configureFirst": "먼저 BYOK에서 provider를 설정하세요.",
"openByok": "BYOK 열기"
}
},
"chat": {
"fallbackTitle": "채팅 {{id}}",
"loading": "불러오는 중…",
+72 -1
View File
@@ -12,7 +12,8 @@
"system": {
"section": "Hệ thống",
"restartHint": "Khởi động lại nanobot để áp dụng thay đổi runtime.",
"restart": "Khởi động lại nanobot"
"restart": "Khởi động lại nanobot",
"restarting": "Đang khởi động lại..."
},
"restart": {
"completed": "Khởi động lại hoàn tất sau {{seconds}} giây."
@@ -31,11 +32,81 @@
"newChat": "Cuộc trò chuyện mới",
"recent": "Gần đây",
"refreshSessions": "Làm mới phiên",
"settings": "Cài đặt",
"language": {
"label": "Ngôn ngữ",
"ariaLabel": "Đổi ngôn ngữ"
}
},
"settings": {
"backToChat": "Quay lại trò chuyện",
"sidebar": {
"title": "Cài đặt",
"ariaLabel": "Các mục cài đặt"
},
"nav": {
"general": "Chung",
"byok": "BYOK"
},
"sections": {
"interface": "Giao diện",
"ai": "AI",
"system": "Hệ thống"
},
"rows": {
"theme": "Giao diện",
"language": "Ngôn ngữ",
"provider": "Nhà cung cấp",
"model": "Mô hình",
"restart": "Khởi động lại nanobot",
"configPath": "Đường dẫn cấu hình"
},
"help": {
"theme": "Chuyển giữa giao diện sáng và tối.",
"language": "Chọn ngôn ngữ dùng trong WebUI.",
"provider": "Chọn nhà cung cấp cho các yêu cầu mô hình mới.",
"model": "Đặt tên mô hình mặc định mà nanobot sử dụng.",
"configPath": "Tệp cấu hình gateway hiện đang dùng."
},
"values": {
"light": "Sáng",
"dark": "Tối",
"notAvailable": "Không khả dụng"
},
"status": {
"loading": "Đang tải cài đặt...",
"loadError": "Không thể tải cài đặt",
"unsaved": "Có thay đổi chưa lưu.",
"savedRestart": "Đã lưu. Khởi động lại nanobot để áp dụng."
},
"actions": {
"save": "Lưu",
"saving": "Đang lưu",
"edit": "Sửa",
"cancel": "Hủy"
},
"byok": {
"description": "Dùng key provider của riêng bạn. Nanobot đọc các giá trị này từ config hiện tại, và chỉ provider đã cấu hình mới có thể chọn trong Chung.",
"configured": "Đã cấu hình",
"notConfigured": "Chưa cấu hình",
"configuredSection": "Đã cấu hình",
"notConfiguredSection": "Chưa cấu hình",
"showMore": "Hiển thị thêm {{count}}",
"showLess": "Thu gọn",
"apiKey": "API key",
"apiBase": "API base",
"apiKeyPlaceholder": "Nhập API key",
"apiKeyConfiguredPlaceholder": "Để trống để giữ key hiện tại",
"configuredKeyHint": "Key đã cấu hình",
"apiBasePlaceholder": "Dùng mặc định của provider",
"apiKeyRequired": "Cần API key để cấu hình provider này.",
"showApiKey": "Hiển thị API key",
"hideApiKey": "Ẩn API key",
"noConfiguredProviders": "Chưa có provider đã cấu hình",
"configureFirst": "Hãy cấu hình provider trong BYOK trước.",
"openByok": "Mở BYOK"
}
},
"chat": {
"fallbackTitle": "Trò chuyện {{id}}",
"loading": "Đang tải…",
+71 -1
View File
@@ -12,7 +12,8 @@
"system": {
"section": "系统",
"restartHint": "重启 nanobot 以应用运行时更改。",
"restart": "重启 nanobot"
"restart": "重启 nanobot",
"restarting": "正在重启..."
},
"restart": {
"completed": "重启已完成,用时 {{seconds}} 秒。"
@@ -44,6 +45,75 @@
"ariaLabel": "切换语言"
}
},
"settings": {
"backToChat": "返回对话",
"sidebar": {
"title": "设置",
"ariaLabel": "设置分区"
},
"nav": {
"general": "通用",
"byok": "BYOK"
},
"sections": {
"interface": "界面",
"ai": "AI",
"system": "系统"
},
"rows": {
"theme": "主题",
"language": "语言",
"provider": "提供商",
"model": "模型",
"restart": "重启 nanobot",
"configPath": "配置路径"
},
"help": {
"theme": "在浅色和深色外观之间切换。",
"language": "选择 WebUI 使用的语言。",
"provider": "选择新模型请求使用的服务提供商。",
"model": "设置 nanobot 默认使用的模型名称。",
"configPath": "当前网关正在使用的配置文件。"
},
"values": {
"light": "浅色",
"dark": "深色",
"notAvailable": "不可用"
},
"status": {
"loading": "正在加载设置...",
"loadError": "无法加载设置",
"unsaved": "有未保存的更改。",
"savedRestart": "已保存。重启 nanobot 后生效。"
},
"actions": {
"save": "保存",
"saving": "保存中",
"edit": "编辑",
"cancel": "取消"
},
"byok": {
"description": "自带 provider key。Nanobot 会从当前 config 读取这些值,只有已配置的 provider 才能在通用设置里选择。",
"configured": "已配置",
"notConfigured": "未配置",
"configuredSection": "已配置",
"notConfiguredSection": "未配置",
"showMore": "再显示 {{count}} 个",
"showLess": "收起",
"apiKey": "API key",
"apiBase": "API base",
"apiKeyPlaceholder": "输入 API key",
"apiKeyConfiguredPlaceholder": "留空则保留当前 key",
"configuredKeyHint": "已配置的 key",
"apiBasePlaceholder": "使用 provider 默认地址",
"apiKeyRequired": "需要 API key 才能配置此 provider。",
"showApiKey": "显示 API key",
"hideApiKey": "隐藏 API key",
"noConfiguredProviders": "没有已配置的 provider",
"configureFirst": "请先在 BYOK 里配置 provider。",
"openByok": "打开 BYOK"
}
},
"chat": {
"fallbackTitle": "对话 {{id}}",
"loading": "加载中…",
+72 -1
View File
@@ -12,7 +12,8 @@
"system": {
"section": "系統",
"restartHint": "重新啟動 nanobot 以套用執行階段變更。",
"restart": "重新啟動 nanobot"
"restart": "重新啟動 nanobot",
"restarting": "正在重新啟動..."
},
"restart": {
"completed": "重新啟動已完成,耗時 {{seconds}} 秒。"
@@ -31,11 +32,81 @@
"newChat": "新增對話",
"recent": "最近對話",
"refreshSessions": "重新整理會話",
"settings": "設定",
"language": {
"label": "語言",
"ariaLabel": "切換語言"
}
},
"settings": {
"backToChat": "返回對話",
"sidebar": {
"title": "設定",
"ariaLabel": "設定分區"
},
"nav": {
"general": "一般",
"byok": "BYOK"
},
"sections": {
"interface": "介面",
"ai": "AI",
"system": "系統"
},
"rows": {
"theme": "主題",
"language": "語言",
"provider": "提供者",
"model": "模型",
"restart": "重新啟動 nanobot",
"configPath": "設定檔路徑"
},
"help": {
"theme": "在淺色與深色外觀之間切換。",
"language": "選擇 WebUI 使用的語言。",
"provider": "選擇新模型請求使用的服務提供者。",
"model": "設定 nanobot 預設使用的模型名稱。",
"configPath": "目前閘道正在使用的設定檔。"
},
"values": {
"light": "淺色",
"dark": "深色",
"notAvailable": "不可用"
},
"status": {
"loading": "正在載入設定...",
"loadError": "無法載入設定",
"unsaved": "有未儲存的變更。",
"savedRestart": "已儲存。重新啟動 nanobot 後生效。"
},
"actions": {
"save": "儲存",
"saving": "儲存中",
"edit": "編輯",
"cancel": "取消"
},
"byok": {
"description": "自帶 provider key。Nanobot 會從目前 config 讀取這些值,只有已設定的 provider 才能在一般設定中選擇。",
"configured": "已設定",
"notConfigured": "未設定",
"configuredSection": "已設定",
"notConfiguredSection": "未設定",
"showMore": "再顯示 {{count}} 個",
"showLess": "收合",
"apiKey": "API key",
"apiBase": "API base",
"apiKeyPlaceholder": "輸入 API key",
"apiKeyConfiguredPlaceholder": "留空則保留目前 key",
"configuredKeyHint": "已設定的 key",
"apiBasePlaceholder": "使用 provider 預設地址",
"apiKeyRequired": "需要 API key 才能設定此 provider。",
"showApiKey": "顯示 API key",
"hideApiKey": "隱藏 API key",
"noConfiguredProviders": "沒有已設定的 provider",
"configureFirst": "請先在 BYOK 設定 provider。",
"openByok": "開啟 BYOK"
}
},
"chat": {
"fallbackTitle": "對話 {{id}}",
"loading": "載入中…",