@@ -7,19 +7,26 @@ import 'package:uuid/v4.dart';
77import 'package:wox/components/wox_image_view.dart' ;
88import 'package:wox/components/wox_list_view.dart' ;
99import 'package:wox/controllers/wox_ai_chat_controller.dart' ;
10+ import 'package:wox/controllers/wox_setting_controller.dart' ;
1011import 'package:wox/entity/wox_ai.dart' ;
1112import 'package:wox/entity/wox_hotkey.dart' ;
1213import 'package:wox/entity/wox_theme.dart' ;
1314import 'package:wox/enums/wox_ai_conversation_role_enum.dart' ;
1415import 'package:wox/enums/wox_list_view_type_enum.dart' ;
1516import 'package:wox/utils/log.dart' ;
17+ import 'package:wox/utils/strings.dart' ;
1618import 'package:wox/utils/wox_theme_util.dart' ;
1719
1820class WoxAIChatView extends GetView <WoxAIChatController > {
1921 const WoxAIChatView ({super .key});
2022
2123 WoxTheme get woxTheme => WoxThemeUtil .instance.currentTheme.value;
2224
25+ // Get translation from WoxSettingController
26+ String tr (String key) {
27+ return Get .find <WoxSettingController >().tr (key);
28+ }
29+
2330 @override
2431 Widget build (BuildContext context) {
2532 if (LoggerSwitch .enablePaintLog) Logger .instance.debug (const UuidV4 ().generate (), "repaint: chat view" );
@@ -54,7 +61,7 @@ class WoxAIChatView extends GetView<WoxAIChatController> {
5461 const SizedBox (width: 8 ),
5562 Expanded (
5663 child: Obx (() => Text (
57- controller.aiChatData.value.model.value.name.isEmpty ? "请选择模型" : controller.aiChatData.value.model.value.name,
64+ controller.aiChatData.value.model.value.name.isEmpty ? tr ( "ui_ai_chat_select_model" ) : controller.aiChatData.value.model.value.name,
5865 style: TextStyle (
5966 color: fromCssColor (woxTheme.previewPropertyTitleColor),
6067 fontSize: 14 ,
@@ -130,7 +137,7 @@ class WoxAIChatView extends GetView<WoxAIChatController> {
130137 controller: controller.textController,
131138 focusNode: controller.aiChatFocusNode,
132139 decoration: InputDecoration (
133- hintText: '在这里输入消息,按下 ← 发送' ,
140+ hintText: tr ( 'ui_ai_chat_input_hint' ) ,
134141 hintStyle: TextStyle (color: fromCssColor (woxTheme.previewPropertyTitleColor)),
135142 border: InputBorder .none,
136143 contentPadding: const EdgeInsets .symmetric (horizontal: 16 , vertical: 10 ),
@@ -158,7 +165,7 @@ class WoxAIChatView extends GetView<WoxAIChatController> {
158165 children: [
159166 // Tool configuration button - opens chat select panel
160167 Obx (() => IconButton (
161- tooltip: 'Configure Tool Usage' ,
168+ tooltip: tr ( 'ui_ai_chat_configure_tools' ) ,
162169 icon: Icon (Icons .build,
163170 size: 18 ,
164171 color: controller.selectedTools.isNotEmpty
@@ -194,7 +201,7 @@ class WoxAIChatView extends GetView<WoxAIChatController> {
194201 ),
195202 const SizedBox (width: 4 ),
196203 Text (
197- '发送' ,
204+ tr ( 'ui_ai_chat_send' ) ,
198205 style: TextStyle (
199206 fontSize: 12 ,
200207 color: fromCssColor (woxTheme.actionItemActiveFontColor),
@@ -247,7 +254,9 @@ class WoxAIChatView extends GetView<WoxAIChatController> {
247254 crossAxisAlignment: CrossAxisAlignment .start,
248255 children: [
249256 Obx (() => Text (
250- controller.currentChatSelectCategory.isEmpty ? "Chat Options" : (controller.currentChatSelectCategory.value == "models" ? "Select Model" : "Configure Tools" ),
257+ controller.currentChatSelectCategory.isEmpty
258+ ? tr ("ui_ai_chat_options" )
259+ : (controller.currentChatSelectCategory.value == "models" ? tr ("ui_ai_chat_select_model_title" ) : tr ("ui_ai_chat_configure_tools_title" )),
251260 style: TextStyle (color: fromCssColor (woxTheme.actionContainerHeaderFontColor), fontSize: 16.0 ),
252261 )),
253262 const Divider (),
@@ -438,27 +447,27 @@ class WoxAIChatView extends GetView<WoxAIChatController> {
438447 case ToolCallStatus .streaming:
439448 icon = Icons .play_arrow;
440449 color = Colors .blue;
441- tooltip = '正在调用' ;
450+ tooltip = tr ( 'ui_ai_chat_tool_status_streaming' ) ;
442451 break ;
443452 case ToolCallStatus .pending:
444453 icon = Icons .hourglass_empty;
445454 color = Colors .grey;
446- tooltip = '等待执行' ;
455+ tooltip = tr ( 'ui_ai_chat_tool_status_pending' ) ;
447456 break ;
448457 case ToolCallStatus .running:
449458 icon = Icons .refresh;
450459 color = Colors .blue;
451- tooltip = '正在执行' ;
460+ tooltip = tr ( 'ui_ai_chat_tool_status_running' ) ;
452461 break ;
453462 case ToolCallStatus .succeeded:
454463 icon = Icons .check_circle;
455464 color = Colors .green;
456- tooltip = '执行成功' ;
465+ tooltip = tr ( 'ui_ai_chat_tool_status_succeeded' ) ;
457466 break ;
458467 case ToolCallStatus .failed:
459468 icon = Icons .error;
460469 color = Colors .red;
461- tooltip = '执行失败: ${ info .response }' ;
470+ tooltip = Strings . format ( tr ( 'ui_ai_chat_tool_status_failed' ), [ info.response]) ;
462471 break ;
463472 }
464473
@@ -488,11 +497,11 @@ class WoxAIChatView extends GetView<WoxAIChatController> {
488497 child: Column (
489498 crossAxisAlignment: CrossAxisAlignment .start,
490499 children: [
491- _buildDetailItem ('Id' , info.id),
492- _buildDetailItem ('名称' , info.name),
493- _buildDetailItem ('参数' , info.status == ToolCallStatus .streaming ? info.delta : info.arguments.toString ()),
494- _buildDetailItem ('耗时' , '${info .duration }ms' ),
495- if (info.response.isNotEmpty) _buildDetailItem ('响应' , info.response),
500+ _buildDetailItem (tr ( 'ui_ai_chat_tool_detail_id' ) , info.id),
501+ _buildDetailItem (tr ( 'ui_ai_chat_tool_detail_name' ) , info.name),
502+ _buildDetailItem (tr ( 'ui_ai_chat_tool_detail_params' ) , info.status == ToolCallStatus .streaming ? info.delta : info.arguments.toString ()),
503+ _buildDetailItem (tr ( 'ui_ai_chat_tool_detail_duration' ) , '${info .duration }ms' ),
504+ if (info.response.isNotEmpty) _buildDetailItem (tr ( 'ui_ai_chat_tool_detail_response' ) , info.response),
496505 ],
497506 ),
498507 );
0 commit comments