tabby-ai-assistant 1.0.8 → 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/chat/ai-sidebar.component.d.ts +16 -3
- package/dist/components/chat/chat-input.component.d.ts +4 -0
- package/dist/components/chat/chat-interface.component.d.ts +22 -1
- package/dist/components/chat/chat-settings.component.d.ts +21 -11
- package/dist/components/settings/ai-settings-tab.component.d.ts +14 -4
- package/dist/components/settings/general-settings.component.d.ts +43 -12
- package/dist/components/settings/provider-config.component.d.ts +110 -5
- package/dist/components/settings/security-settings.component.d.ts +14 -4
- package/dist/i18n/index.d.ts +48 -0
- package/dist/i18n/translations/en-US.d.ts +5 -0
- package/dist/i18n/translations/ja-JP.d.ts +5 -0
- package/dist/i18n/translations/zh-CN.d.ts +5 -0
- package/dist/i18n/types.d.ts +198 -0
- package/dist/index.js +1 -1
- package/dist/services/chat/ai-sidebar.service.d.ts +23 -1
- package/dist/services/core/theme.service.d.ts +53 -0
- package/dist/services/core/toast.service.d.ts +15 -0
- package/package.json +1 -1
- package/src/components/chat/ai-sidebar.component.scss +468 -0
- package/src/components/chat/ai-sidebar.component.ts +47 -344
- package/src/components/chat/chat-input.component.scss +2 -2
- package/src/components/chat/chat-input.component.ts +16 -5
- package/src/components/chat/chat-interface.component.html +11 -11
- package/src/components/chat/chat-interface.component.scss +410 -4
- package/src/components/chat/chat-interface.component.ts +105 -14
- package/src/components/chat/chat-message.component.scss +3 -3
- package/src/components/chat/chat-message.component.ts +3 -2
- package/src/components/chat/chat-settings.component.html +95 -61
- package/src/components/chat/chat-settings.component.scss +224 -50
- package/src/components/chat/chat-settings.component.ts +56 -30
- package/src/components/security/risk-confirm-dialog.component.scss +7 -7
- package/src/components/settings/ai-settings-tab.component.html +27 -27
- package/src/components/settings/ai-settings-tab.component.scss +34 -20
- package/src/components/settings/ai-settings-tab.component.ts +59 -20
- package/src/components/settings/general-settings.component.html +69 -40
- package/src/components/settings/general-settings.component.scss +151 -58
- package/src/components/settings/general-settings.component.ts +168 -55
- package/src/components/settings/provider-config.component.html +183 -60
- package/src/components/settings/provider-config.component.scss +332 -153
- package/src/components/settings/provider-config.component.ts +268 -19
- package/src/components/settings/security-settings.component.html +70 -39
- package/src/components/settings/security-settings.component.scss +104 -8
- package/src/components/settings/security-settings.component.ts +48 -10
- package/src/i18n/index.ts +129 -0
- package/src/i18n/translations/en-US.ts +193 -0
- package/src/i18n/translations/ja-JP.ts +193 -0
- package/src/i18n/translations/zh-CN.ts +193 -0
- package/src/i18n/types.ts +224 -0
- package/src/index.ts +6 -0
- package/src/services/chat/ai-sidebar.service.ts +157 -5
- package/src/services/core/theme.service.ts +480 -0
- package/src/services/core/toast.service.ts +36 -0
- package/src/styles/ai-assistant.scss +8 -88
- package/src/styles/themes.scss +161 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 日本語翻訳
|
|
3
|
+
*/
|
|
4
|
+
import { TranslationKeys } from '../types';
|
|
5
|
+
|
|
6
|
+
export const jaJP: TranslationKeys = {
|
|
7
|
+
common: {
|
|
8
|
+
save: '保存',
|
|
9
|
+
cancel: 'キャンセル',
|
|
10
|
+
delete: '削除',
|
|
11
|
+
confirm: '確認',
|
|
12
|
+
enabled: '有効',
|
|
13
|
+
disabled: '無効',
|
|
14
|
+
online: 'オンライン',
|
|
15
|
+
offline: 'オフライン',
|
|
16
|
+
testing: '検出中...',
|
|
17
|
+
error: 'エラー',
|
|
18
|
+
success: '成功',
|
|
19
|
+
notConfigured: '未設定',
|
|
20
|
+
add: '追加',
|
|
21
|
+
remove: '削除',
|
|
22
|
+
close: '閉じる',
|
|
23
|
+
yes: 'はい',
|
|
24
|
+
no: 'いいえ',
|
|
25
|
+
reset: 'リセット',
|
|
26
|
+
default: 'デフォルト',
|
|
27
|
+
today: '今日'
|
|
28
|
+
},
|
|
29
|
+
|
|
30
|
+
settings: {
|
|
31
|
+
title: '設定',
|
|
32
|
+
generalTab: '基本設定',
|
|
33
|
+
providersTab: 'AIプロバイダー',
|
|
34
|
+
securityTab: 'セキュリティ',
|
|
35
|
+
chatTab: 'チャット',
|
|
36
|
+
advancedTab: '詳細設定'
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
general: {
|
|
40
|
+
title: '基本設定',
|
|
41
|
+
enableAssistant: 'AIアシスタントを有効化',
|
|
42
|
+
enableAssistantDesc: 'AIアシスタント機能全体の有効/無効を切り替え',
|
|
43
|
+
defaultProvider: 'デフォルトAIプロバイダー',
|
|
44
|
+
providerCount: '{count}個のプロバイダーが設定されています',
|
|
45
|
+
language: '言語',
|
|
46
|
+
theme: 'テーマ',
|
|
47
|
+
themeAuto: 'システムに合わせる',
|
|
48
|
+
themeLight: 'ライトテーマ',
|
|
49
|
+
themeDark: 'ダークテーマ',
|
|
50
|
+
themePixel: 'ピクセルレトロ',
|
|
51
|
+
themeTech: 'サイバーテック',
|
|
52
|
+
shortcuts: 'ショートカットキー',
|
|
53
|
+
shortcutOpenChat: 'AIアシスタントを開く',
|
|
54
|
+
shortcutOpenChatDesc: 'チャット界面を開く',
|
|
55
|
+
shortcutGenerate: 'コマンドを生成',
|
|
56
|
+
shortcutGenerateDesc: '選択範囲からコマンドを生成',
|
|
57
|
+
shortcutExplain: 'コマンドを解説',
|
|
58
|
+
shortcutExplainDesc: '現在の選択を解説',
|
|
59
|
+
shortcutTip: 'ショートカットキーはTabby設定でカスタマイズ可能'
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
chatSettings: {
|
|
63
|
+
title: 'チャット設定',
|
|
64
|
+
appearance: '外観',
|
|
65
|
+
theme: 'テーマ',
|
|
66
|
+
fontSize: 'フォントサイズ',
|
|
67
|
+
compactMode: 'コンパクトモード',
|
|
68
|
+
compactModeDesc: 'メッセージの間隔を狭めて更多内容を表示',
|
|
69
|
+
behavior: 'チャット動作',
|
|
70
|
+
enterToSend: 'Enterで送信',
|
|
71
|
+
enterToSendDesc: 'Shift+Enterで改行',
|
|
72
|
+
showTimestamps: 'タイムスタンプを表示',
|
|
73
|
+
showTimestampsDesc: '各メッセージの下方に送信時刻を表示',
|
|
74
|
+
showAvatars: 'アバターを表示',
|
|
75
|
+
showAvatarsDesc: 'ユーザーとAIのアバターアイコンを表示',
|
|
76
|
+
soundEnabled: '通知音を有効化',
|
|
77
|
+
soundEnabledDesc: 'AIからの応答時に通知音を再生',
|
|
78
|
+
history: 'チャット履歴',
|
|
79
|
+
enableHistory: 'チャット履歴を有効化',
|
|
80
|
+
enableHistoryDesc: 'チャット記録を保存して次回の利用時に表示',
|
|
81
|
+
maxHistory: '最大履歴数',
|
|
82
|
+
maxHistoryUnit: '件',
|
|
83
|
+
autoSave: '自動保存',
|
|
84
|
+
autoSaveDesc: 'メッセージ送信後に自動保存',
|
|
85
|
+
exportSettings: '設定をエクスポート',
|
|
86
|
+
clearHistory: 'チャット履歴を削除',
|
|
87
|
+
resetDefaults: 'デフォルトに戻す',
|
|
88
|
+
clearHistoryConfirm: 'すべてのチャット記録を削除してもよろしいですか?この操作は取り消せません。',
|
|
89
|
+
resetConfirm: 'すべての設定をデフォルトに戻してもよろしいですか?'
|
|
90
|
+
},
|
|
91
|
+
|
|
92
|
+
security: {
|
|
93
|
+
title: 'セキュリティ設定',
|
|
94
|
+
accessControl: 'アクセス制御',
|
|
95
|
+
passwordProtection: 'パスワード保護を有効化',
|
|
96
|
+
passwordProtectionDesc: '高リスクコマンドにはパスワード確認が必要',
|
|
97
|
+
setPassword: 'パスワードを設定',
|
|
98
|
+
passwordPlaceholder: 'パスワードを入力',
|
|
99
|
+
riskAssessment: 'リスク評価',
|
|
100
|
+
riskAssessmentDesc: 'コマンドのリスクレベルを自動評価',
|
|
101
|
+
defaultRiskLevel: 'デフォルトリスクレベル',
|
|
102
|
+
riskLow: '低リスク',
|
|
103
|
+
riskMedium: '中リスク',
|
|
104
|
+
riskHigh: '高リスク',
|
|
105
|
+
userConsent: 'ユーザー同意',
|
|
106
|
+
rememberConsent: 'ユーザー同意を記憶',
|
|
107
|
+
rememberConsentDesc: '同意の有効期間',
|
|
108
|
+
consentExpiryDays: '日',
|
|
109
|
+
dangerousPatterns: '危険なコマンドパターン',
|
|
110
|
+
addPattern: '危険パターンを追加',
|
|
111
|
+
patternPlaceholder: '危険なコマンドパターンを入力',
|
|
112
|
+
saveSettings: '設定を保存',
|
|
113
|
+
resetDefaults: 'デフォルトに戻す',
|
|
114
|
+
resetConfirm: 'セキュリティ設定をデフォルトに戻してもよろしいですか?'
|
|
115
|
+
},
|
|
116
|
+
|
|
117
|
+
providers: {
|
|
118
|
+
title: 'AIプロバイダー設定',
|
|
119
|
+
cloudProviders: 'クラウドプロバイダー',
|
|
120
|
+
cloudProvidersDesc: 'APIキーが必要なオンラインサービス',
|
|
121
|
+
localProviders: 'ローカルプロバイダー',
|
|
122
|
+
localProvidersDesc: 'ローカルで実行、APIキー不要',
|
|
123
|
+
configured: '有効',
|
|
124
|
+
displayName: '表示名',
|
|
125
|
+
status: 'ステータス',
|
|
126
|
+
apiKey: 'APIキー',
|
|
127
|
+
baseURL: 'ベースURL',
|
|
128
|
+
model: 'モデル',
|
|
129
|
+
saveConfig: '設定を保存',
|
|
130
|
+
testConnection: '接続をテスト',
|
|
131
|
+
detectService: 'サービスを検出',
|
|
132
|
+
delete: '削除',
|
|
133
|
+
deleteConfirm: 'このプロバイダー設定を削除してもよろしいですか?',
|
|
134
|
+
testSuccess: '接続テスト成功!',
|
|
135
|
+
testFail: '接続テスト失敗',
|
|
136
|
+
testError: 'サービスに接続できません。サービスが起動していることを確認してください。',
|
|
137
|
+
configSaved: '設定が保存されました',
|
|
138
|
+
configDeleted: '設定が削除されました'
|
|
139
|
+
},
|
|
140
|
+
|
|
141
|
+
providerNames: {
|
|
142
|
+
openai: 'OpenAI',
|
|
143
|
+
anthropic: 'Anthropic Claude',
|
|
144
|
+
minimax: 'Minimax',
|
|
145
|
+
glm: 'GLM (ChatGLM)',
|
|
146
|
+
openaiCompatible: 'OpenAI互換',
|
|
147
|
+
ollama: 'Ollama (ローカル)',
|
|
148
|
+
vllm: 'vLLM (ローカル)'
|
|
149
|
+
},
|
|
150
|
+
|
|
151
|
+
chatInterface: {
|
|
152
|
+
title: 'AIアシスタント',
|
|
153
|
+
welcomeMessage: '您好!我是AI助手',
|
|
154
|
+
inputPlaceholder: '質問を入力するか、実行したいコマンドを描述してください...',
|
|
155
|
+
thinking: 'AIが考え中...',
|
|
156
|
+
executingTool: 'ツールを実行中...',
|
|
157
|
+
toolComplete: 'ツール実行完了',
|
|
158
|
+
errorPrefix: 'エラー',
|
|
159
|
+
tipCommand: 'ヒント:例)「現在のディレクトリの内容を表示」のように実行したいコマンドを描述できます',
|
|
160
|
+
tipShortcut: 'ショートカット:Ctrl+Shift+G で生成、Ctrl+Shift+E で解説',
|
|
161
|
+
clearChat: 'チャットを削除',
|
|
162
|
+
clearChatConfirm: 'チャットを削除してもよろしいですか?',
|
|
163
|
+
exportChat: 'チャットをエクスポート',
|
|
164
|
+
switchProvider: 'AIプロバイダーを切り替え',
|
|
165
|
+
providerBadge: 'プロバイダー'
|
|
166
|
+
},
|
|
167
|
+
|
|
168
|
+
riskLevel: {
|
|
169
|
+
low: '低リスク',
|
|
170
|
+
medium: '中リスク',
|
|
171
|
+
high: '高リスク',
|
|
172
|
+
unknown: '不明'
|
|
173
|
+
},
|
|
174
|
+
|
|
175
|
+
advancedSettings: {
|
|
176
|
+
title: '詳細設定',
|
|
177
|
+
configManagement: '設定管理',
|
|
178
|
+
validateConfig: '設定を検証',
|
|
179
|
+
resetDefaults: 'デフォルトに戻す',
|
|
180
|
+
logSettings: 'ログ設定',
|
|
181
|
+
logLevel: 'ログレベル',
|
|
182
|
+
logLevels: {
|
|
183
|
+
debug: 'デバッグ',
|
|
184
|
+
info: '情報',
|
|
185
|
+
warn: '警告',
|
|
186
|
+
error: 'エラー'
|
|
187
|
+
},
|
|
188
|
+
systemInfo: 'システム情報',
|
|
189
|
+
pluginVersion: 'プラグインVersion',
|
|
190
|
+
supportedProviders: 'サポートされているプロバイダー',
|
|
191
|
+
currentProvider: '現在のリプロバイダー'
|
|
192
|
+
}
|
|
193
|
+
};
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 中文翻译
|
|
3
|
+
*/
|
|
4
|
+
import { TranslationKeys } from '../types';
|
|
5
|
+
|
|
6
|
+
export const zhCN: TranslationKeys = {
|
|
7
|
+
common: {
|
|
8
|
+
save: '保存',
|
|
9
|
+
cancel: '取消',
|
|
10
|
+
delete: '删除',
|
|
11
|
+
confirm: '确定',
|
|
12
|
+
enabled: '已启用',
|
|
13
|
+
disabled: '已禁用',
|
|
14
|
+
online: '在线',
|
|
15
|
+
offline: '离线',
|
|
16
|
+
testing: '检测中...',
|
|
17
|
+
error: '错误',
|
|
18
|
+
success: '成功',
|
|
19
|
+
notConfigured: '未配置',
|
|
20
|
+
add: '添加',
|
|
21
|
+
remove: '删除',
|
|
22
|
+
close: '关闭',
|
|
23
|
+
yes: '是',
|
|
24
|
+
no: '否',
|
|
25
|
+
reset: '重置',
|
|
26
|
+
default: '默认',
|
|
27
|
+
today: '今天'
|
|
28
|
+
},
|
|
29
|
+
|
|
30
|
+
settings: {
|
|
31
|
+
title: '设置',
|
|
32
|
+
generalTab: '基本设置',
|
|
33
|
+
providersTab: 'AI提供商',
|
|
34
|
+
securityTab: '安全设置',
|
|
35
|
+
chatTab: '聊天设置',
|
|
36
|
+
advancedTab: '高级设置'
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
general: {
|
|
40
|
+
title: '基本设置',
|
|
41
|
+
enableAssistant: '启用AI助手',
|
|
42
|
+
enableAssistantDesc: '启用或禁用整个AI助手功能',
|
|
43
|
+
defaultProvider: '默认AI提供商',
|
|
44
|
+
providerCount: '已配置 {count} 个提供商,当前使用',
|
|
45
|
+
language: '语言',
|
|
46
|
+
theme: '主题',
|
|
47
|
+
themeAuto: '跟随系统',
|
|
48
|
+
themeLight: '浅色主题',
|
|
49
|
+
themeDark: '深色主题',
|
|
50
|
+
themePixel: '像素复古',
|
|
51
|
+
themeTech: '赛博科技',
|
|
52
|
+
shortcuts: '快捷键',
|
|
53
|
+
shortcutOpenChat: '打开AI助手',
|
|
54
|
+
shortcutOpenChatDesc: '打开聊天界面',
|
|
55
|
+
shortcutGenerate: '生成命令',
|
|
56
|
+
shortcutGenerateDesc: '从选择生成命令',
|
|
57
|
+
shortcutExplain: '解释命令',
|
|
58
|
+
shortcutExplainDesc: '解释当前选择',
|
|
59
|
+
shortcutTip: '快捷键可在 Tabby 设置中自定义'
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
chatSettings: {
|
|
63
|
+
title: '聊天设置',
|
|
64
|
+
appearance: '外观',
|
|
65
|
+
theme: '主题',
|
|
66
|
+
fontSize: '字体大小',
|
|
67
|
+
compactMode: '紧凑模式',
|
|
68
|
+
compactModeDesc: '减少消息间距,显示更多内容',
|
|
69
|
+
behavior: '聊天行为',
|
|
70
|
+
enterToSend: 'Enter键发送消息',
|
|
71
|
+
enterToSendDesc: 'Shift+Enter 换行',
|
|
72
|
+
showTimestamps: '显示时间戳',
|
|
73
|
+
showTimestampsDesc: '在每条消息下方显示发送时间',
|
|
74
|
+
showAvatars: '显示头像',
|
|
75
|
+
showAvatarsDesc: '显示用户和AI的头像图标',
|
|
76
|
+
soundEnabled: '启用提示音',
|
|
77
|
+
soundEnabledDesc: '收到AI回复时播放提示音',
|
|
78
|
+
history: '聊天历史',
|
|
79
|
+
enableHistory: '启用聊天历史',
|
|
80
|
+
enableHistoryDesc: '保存聊天记录以便下次使用',
|
|
81
|
+
maxHistory: '最大历史记录数',
|
|
82
|
+
maxHistoryUnit: '条',
|
|
83
|
+
autoSave: '自动保存聊天记录',
|
|
84
|
+
autoSaveDesc: '每次发送消息后自动保存',
|
|
85
|
+
exportSettings: '导出设置',
|
|
86
|
+
clearHistory: '清空聊天记录',
|
|
87
|
+
resetDefaults: '重置为默认',
|
|
88
|
+
clearHistoryConfirm: '确定要清空所有聊天记录吗?此操作不可恢复。',
|
|
89
|
+
resetConfirm: '确定要重置所有设置为默认值吗?'
|
|
90
|
+
},
|
|
91
|
+
|
|
92
|
+
security: {
|
|
93
|
+
title: '安全设置',
|
|
94
|
+
accessControl: '访问保护',
|
|
95
|
+
passwordProtection: '启用密码保护',
|
|
96
|
+
passwordProtectionDesc: '高风险命令需要密码确认',
|
|
97
|
+
setPassword: '设置密码',
|
|
98
|
+
passwordPlaceholder: '输入密码',
|
|
99
|
+
riskAssessment: '风险评估',
|
|
100
|
+
riskAssessmentDesc: '自动评估命令风险等级',
|
|
101
|
+
defaultRiskLevel: '默认风险等级',
|
|
102
|
+
riskLow: '低风险',
|
|
103
|
+
riskMedium: '中等风险',
|
|
104
|
+
riskHigh: '高风险',
|
|
105
|
+
userConsent: '用户授权',
|
|
106
|
+
rememberConsent: '记住用户授权',
|
|
107
|
+
rememberConsentDesc: '授权有效期',
|
|
108
|
+
consentExpiryDays: '天',
|
|
109
|
+
dangerousPatterns: '危险命令模式',
|
|
110
|
+
addPattern: '添加危险命令模式',
|
|
111
|
+
patternPlaceholder: '输入危险命令模式',
|
|
112
|
+
saveSettings: '保存设置',
|
|
113
|
+
resetDefaults: '恢复默认',
|
|
114
|
+
resetConfirm: '确定要重置安全设置为默认值吗?'
|
|
115
|
+
},
|
|
116
|
+
|
|
117
|
+
providers: {
|
|
118
|
+
title: 'AI提供商配置',
|
|
119
|
+
cloudProviders: '云端提供商',
|
|
120
|
+
cloudProvidersDesc: '需要 API Key 的在线服务',
|
|
121
|
+
localProviders: '本地提供商',
|
|
122
|
+
localProvidersDesc: '无需 API Key,本地运行',
|
|
123
|
+
configured: '已启用',
|
|
124
|
+
displayName: '显示名称',
|
|
125
|
+
status: '状态',
|
|
126
|
+
apiKey: 'API Key',
|
|
127
|
+
baseURL: 'Base URL',
|
|
128
|
+
model: 'Model',
|
|
129
|
+
saveConfig: '保存配置',
|
|
130
|
+
testConnection: '测试连接',
|
|
131
|
+
detectService: '检测服务',
|
|
132
|
+
delete: '删除',
|
|
133
|
+
deleteConfirm: '确定要删除该提供商配置吗?',
|
|
134
|
+
testSuccess: '连接测试成功!',
|
|
135
|
+
testFail: '连接测试失败',
|
|
136
|
+
testError: '无法连接到服务,请确保服务已启动',
|
|
137
|
+
configSaved: '配置已保存',
|
|
138
|
+
configDeleted: '配置已删除'
|
|
139
|
+
},
|
|
140
|
+
|
|
141
|
+
providerNames: {
|
|
142
|
+
openai: 'OpenAI',
|
|
143
|
+
anthropic: 'Anthropic Claude',
|
|
144
|
+
minimax: 'Minimax',
|
|
145
|
+
glm: 'GLM (ChatGLM)',
|
|
146
|
+
openaiCompatible: 'OpenAI Compatible',
|
|
147
|
+
ollama: 'Ollama (本地)',
|
|
148
|
+
vllm: 'vLLM (本地)'
|
|
149
|
+
},
|
|
150
|
+
|
|
151
|
+
chatInterface: {
|
|
152
|
+
title: 'AI助手',
|
|
153
|
+
welcomeMessage: '您好!我是AI助手',
|
|
154
|
+
inputPlaceholder: '输入您的问题或描述要执行的命令...',
|
|
155
|
+
thinking: 'AI正在思考...',
|
|
156
|
+
executingTool: '正在执行工具...',
|
|
157
|
+
toolComplete: '工具执行完成',
|
|
158
|
+
errorPrefix: '错误',
|
|
159
|
+
tipCommand: '提示:您可以描述想执行的命令,例如"查看当前目录的所有文件"',
|
|
160
|
+
tipShortcut: '快捷键:Ctrl+Shift+G 生成命令,Ctrl+Shift+E 解释命令',
|
|
161
|
+
clearChat: '清空聊天记录',
|
|
162
|
+
clearChatConfirm: '确定要清空聊天记录吗?',
|
|
163
|
+
exportChat: '导出聊天记录',
|
|
164
|
+
switchProvider: '切换AI提供商',
|
|
165
|
+
providerBadge: '提供商'
|
|
166
|
+
},
|
|
167
|
+
|
|
168
|
+
riskLevel: {
|
|
169
|
+
low: '低风险',
|
|
170
|
+
medium: '中等风险',
|
|
171
|
+
high: '高风险',
|
|
172
|
+
unknown: '未知'
|
|
173
|
+
},
|
|
174
|
+
|
|
175
|
+
advancedSettings: {
|
|
176
|
+
title: '高级设置',
|
|
177
|
+
configManagement: '配置管理',
|
|
178
|
+
validateConfig: '验证配置',
|
|
179
|
+
resetDefaults: '重置为默认',
|
|
180
|
+
logSettings: '日志设置',
|
|
181
|
+
logLevel: '日志级别',
|
|
182
|
+
logLevels: {
|
|
183
|
+
debug: '调试',
|
|
184
|
+
info: '信息',
|
|
185
|
+
warn: '警告',
|
|
186
|
+
error: '错误'
|
|
187
|
+
},
|
|
188
|
+
systemInfo: '系统信息',
|
|
189
|
+
pluginVersion: '插件版本',
|
|
190
|
+
supportedProviders: '支持的提供商',
|
|
191
|
+
currentProvider: '当前提供商'
|
|
192
|
+
}
|
|
193
|
+
};
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 翻译键类型定义
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
// 通用
|
|
6
|
+
export interface CommonTranslations {
|
|
7
|
+
save: string;
|
|
8
|
+
cancel: string;
|
|
9
|
+
delete: string;
|
|
10
|
+
confirm: string;
|
|
11
|
+
enabled: string;
|
|
12
|
+
disabled: string;
|
|
13
|
+
online: string;
|
|
14
|
+
offline: string;
|
|
15
|
+
testing: string;
|
|
16
|
+
error: string;
|
|
17
|
+
success: string;
|
|
18
|
+
notConfigured: string;
|
|
19
|
+
add: string;
|
|
20
|
+
remove: string;
|
|
21
|
+
close: string;
|
|
22
|
+
yes: string;
|
|
23
|
+
no: string;
|
|
24
|
+
reset: string;
|
|
25
|
+
default: string;
|
|
26
|
+
today: string;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// 设置页面
|
|
30
|
+
export interface SettingsTranslations {
|
|
31
|
+
title: string;
|
|
32
|
+
generalTab: string;
|
|
33
|
+
providersTab: string;
|
|
34
|
+
securityTab: string;
|
|
35
|
+
chatTab: string;
|
|
36
|
+
advancedTab: string;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// 基本设置
|
|
40
|
+
export interface GeneralTranslations {
|
|
41
|
+
title: string;
|
|
42
|
+
enableAssistant: string;
|
|
43
|
+
enableAssistantDesc: string;
|
|
44
|
+
defaultProvider: string;
|
|
45
|
+
providerCount: string; // "已配置 {count} 个提供商,当前使用"
|
|
46
|
+
language: string;
|
|
47
|
+
theme: string;
|
|
48
|
+
themeAuto: string;
|
|
49
|
+
themeLight: string;
|
|
50
|
+
themeDark: string;
|
|
51
|
+
themePixel: string;
|
|
52
|
+
themeTech: string;
|
|
53
|
+
shortcuts: string;
|
|
54
|
+
shortcutOpenChat: string;
|
|
55
|
+
shortcutOpenChatDesc: string;
|
|
56
|
+
shortcutGenerate: string;
|
|
57
|
+
shortcutGenerateDesc: string;
|
|
58
|
+
shortcutExplain: string;
|
|
59
|
+
shortcutExplainDesc: string;
|
|
60
|
+
shortcutTip: string;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// 聊天设置
|
|
64
|
+
export interface ChatSettingsTranslations {
|
|
65
|
+
title: string;
|
|
66
|
+
appearance: string;
|
|
67
|
+
theme: string;
|
|
68
|
+
fontSize: string;
|
|
69
|
+
compactMode: string;
|
|
70
|
+
compactModeDesc: string;
|
|
71
|
+
behavior: string;
|
|
72
|
+
enterToSend: string;
|
|
73
|
+
enterToSendDesc: string;
|
|
74
|
+
showTimestamps: string;
|
|
75
|
+
showTimestampsDesc: string;
|
|
76
|
+
showAvatars: string;
|
|
77
|
+
showAvatarsDesc: string;
|
|
78
|
+
soundEnabled: string;
|
|
79
|
+
soundEnabledDesc: string;
|
|
80
|
+
history: string;
|
|
81
|
+
enableHistory: string;
|
|
82
|
+
enableHistoryDesc: string;
|
|
83
|
+
maxHistory: string;
|
|
84
|
+
maxHistoryUnit: string;
|
|
85
|
+
autoSave: string;
|
|
86
|
+
autoSaveDesc: string;
|
|
87
|
+
exportSettings: string;
|
|
88
|
+
clearHistory: string;
|
|
89
|
+
resetDefaults: string;
|
|
90
|
+
clearHistoryConfirm: string;
|
|
91
|
+
resetConfirm: string;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// 安全设置
|
|
95
|
+
export interface SecurityTranslations {
|
|
96
|
+
title: string;
|
|
97
|
+
accessControl: string;
|
|
98
|
+
passwordProtection: string;
|
|
99
|
+
passwordProtectionDesc: string;
|
|
100
|
+
setPassword: string;
|
|
101
|
+
passwordPlaceholder: string;
|
|
102
|
+
riskAssessment: string;
|
|
103
|
+
riskAssessmentDesc: string;
|
|
104
|
+
defaultRiskLevel: string;
|
|
105
|
+
riskLow: string;
|
|
106
|
+
riskMedium: string;
|
|
107
|
+
riskHigh: string;
|
|
108
|
+
userConsent: string;
|
|
109
|
+
rememberConsent: string;
|
|
110
|
+
rememberConsentDesc: string;
|
|
111
|
+
consentExpiryDays: string;
|
|
112
|
+
dangerousPatterns: string;
|
|
113
|
+
addPattern: string;
|
|
114
|
+
patternPlaceholder: string;
|
|
115
|
+
saveSettings: string;
|
|
116
|
+
resetDefaults: string;
|
|
117
|
+
resetConfirm: string;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// 供应商配置
|
|
121
|
+
export interface ProvidersTranslations {
|
|
122
|
+
title: string;
|
|
123
|
+
cloudProviders: string;
|
|
124
|
+
cloudProvidersDesc: string;
|
|
125
|
+
localProviders: string;
|
|
126
|
+
localProvidersDesc: string;
|
|
127
|
+
configured: string;
|
|
128
|
+
displayName: string;
|
|
129
|
+
status: string;
|
|
130
|
+
apiKey: string;
|
|
131
|
+
baseURL: string;
|
|
132
|
+
model: string;
|
|
133
|
+
saveConfig: string;
|
|
134
|
+
testConnection: string;
|
|
135
|
+
detectService: string;
|
|
136
|
+
delete: string;
|
|
137
|
+
deleteConfirm: string;
|
|
138
|
+
testSuccess: string;
|
|
139
|
+
testFail: string;
|
|
140
|
+
testError: string;
|
|
141
|
+
configSaved: string;
|
|
142
|
+
configDeleted: string;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// 供应商
|
|
146
|
+
export interface ProviderNamesTranslations {
|
|
147
|
+
openai: string;
|
|
148
|
+
anthropic: string;
|
|
149
|
+
minimax: string;
|
|
150
|
+
glm: string;
|
|
151
|
+
openaiCompatible: string;
|
|
152
|
+
ollama: string;
|
|
153
|
+
vllm: string;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// 聊天界面
|
|
157
|
+
export interface ChatInterfaceTranslations {
|
|
158
|
+
title: string;
|
|
159
|
+
welcomeMessage: string;
|
|
160
|
+
inputPlaceholder: string;
|
|
161
|
+
thinking: string;
|
|
162
|
+
executingTool: string;
|
|
163
|
+
toolComplete: string;
|
|
164
|
+
errorPrefix: string;
|
|
165
|
+
tipCommand: string;
|
|
166
|
+
tipShortcut: string;
|
|
167
|
+
clearChat: string;
|
|
168
|
+
clearChatConfirm: string;
|
|
169
|
+
exportChat: string;
|
|
170
|
+
switchProvider: string;
|
|
171
|
+
providerBadge: string;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// 风险等级
|
|
175
|
+
export interface RiskLevelTranslations {
|
|
176
|
+
low: string;
|
|
177
|
+
medium: string;
|
|
178
|
+
high: string;
|
|
179
|
+
unknown: string;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// 高级设置
|
|
183
|
+
export interface AdvancedSettingsTranslations {
|
|
184
|
+
title: string;
|
|
185
|
+
configManagement: string;
|
|
186
|
+
validateConfig: string;
|
|
187
|
+
resetDefaults: string;
|
|
188
|
+
logSettings: string;
|
|
189
|
+
logLevel: string;
|
|
190
|
+
logLevels: {
|
|
191
|
+
debug: string;
|
|
192
|
+
info: string;
|
|
193
|
+
warn: string;
|
|
194
|
+
error: string;
|
|
195
|
+
};
|
|
196
|
+
systemInfo: string;
|
|
197
|
+
pluginVersion: string;
|
|
198
|
+
supportedProviders: string;
|
|
199
|
+
currentProvider: string;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// 主翻译类型
|
|
203
|
+
export interface TranslationKeys {
|
|
204
|
+
common: CommonTranslations;
|
|
205
|
+
settings: SettingsTranslations;
|
|
206
|
+
general: GeneralTranslations;
|
|
207
|
+
chatSettings: ChatSettingsTranslations;
|
|
208
|
+
security: SecurityTranslations;
|
|
209
|
+
providers: ProvidersTranslations;
|
|
210
|
+
providerNames: ProviderNamesTranslations;
|
|
211
|
+
chatInterface: ChatInterfaceTranslations;
|
|
212
|
+
riskLevel: RiskLevelTranslations;
|
|
213
|
+
advancedSettings: AdvancedSettingsTranslations;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// 支持的语言类型
|
|
217
|
+
export type SupportedLanguage = 'zh-CN' | 'en-US' | 'ja-JP';
|
|
218
|
+
|
|
219
|
+
// 语言配置
|
|
220
|
+
export interface LanguageConfig {
|
|
221
|
+
code: SupportedLanguage;
|
|
222
|
+
label: string;
|
|
223
|
+
flag: string;
|
|
224
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -6,6 +6,9 @@ import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
|
|
|
6
6
|
// 全局样式
|
|
7
7
|
import './styles/ai-assistant.scss';
|
|
8
8
|
|
|
9
|
+
// i18n Services
|
|
10
|
+
import { TranslateService } from './i18n';
|
|
11
|
+
|
|
9
12
|
// Tabby modules
|
|
10
13
|
import TabbyCoreModule, { AppService, ConfigService, ToolbarButtonProvider, ConfigProvider, HotkeyProvider, HotkeysService } from 'tabby-core';
|
|
11
14
|
import TabbyTerminalModule from 'tabby-terminal';
|
|
@@ -106,6 +109,9 @@ import { AiHotkeyProvider } from './providers/tabby/ai-hotkey.provider';
|
|
|
106
109
|
ConfigProviderService,
|
|
107
110
|
LoggerService,
|
|
108
111
|
|
|
112
|
+
// i18n Services
|
|
113
|
+
TranslateService,
|
|
114
|
+
|
|
109
115
|
// AI Providers
|
|
110
116
|
OpenAiProviderService,
|
|
111
117
|
AnthropicProviderService,
|