main
dart 6,195 lines 148 KB
Raw
1 // ignore: unused_import
2 import 'package:intl/intl.dart' as intl;
3 import 'app_localizations.dart';
4
5 // ignore_for_file: type=lint
6
7 /// The translations for Chinese (`zh`).
8 class AppLocalizationsZh extends AppLocalizations {
9 AppLocalizationsZh([String locale = 'zh']) : super(locale);
10
11 @override
12 String get app_name => 'LocalMind';
13
14 @override
15 String get app_tagline => '您的 AI。您的设备。您的规则。';
16
17 @override
18 String get app_version => '1.0.0';
19
20 @override
21 String get cancel => '取消';
22
23 @override
24 String get confirm => '确认';
25
26 @override
27 String get delete => '删除';
28
29 @override
30 String get save => '保存';
31
32 @override
33 String get retry => '重试';
34
35 @override
36 String get close => '关闭';
37
38 @override
39 String get done => '完成';
40
41 @override
42 String get continue_action => '继续';
43
44 @override
45 String get skip => '跳过';
46
47 @override
48 String get install => '安装';
49
50 @override
51 String get download => '下载';
52
53 @override
54 String get resume => '继续';
55
56 @override
57 String get pause => '暂停';
58
59 @override
60 String get stop => '停止';
61
62 @override
63 String get edit => '编辑';
64
65 @override
66 String get preview => '预览';
67
68 @override
69 String get unload => '卸载';
70
71 @override
72 String get load => '加载';
73
74 @override
75 String get rename => '重命名';
76
77 @override
78 String get pin => 'Pin';
79
80 @override
81 String get unpin => '取消 Pin';
82
83 @override
84 String get share => '分享';
85
86 @override
87 String get copy => '复制';
88
89 @override
90 String get copied => '已复制!';
91
92 @override
93 String get copied_to_clipboard => '已复制到剪贴板';
94
95 @override
96 String get select => '选择';
97
98 @override
99 String get active => '已启用';
100
101 @override
102 String get all => '全部';
103
104 @override
105 String get none => '无';
106
107 @override
108 String get none_selected => '未选择';
109
110 @override
111 String get online => '在线';
112
113 @override
114 String get connected => '已连接';
115
116 @override
117 String get checking => '正在检查';
118
119 @override
120 String get offline => '离线';
121
122 @override
123 String get error => '错误';
124
125 @override
126 String get unknown_error => '未知错误';
127
128 @override
129 String get not_now => '暂不';
130
131 @override
132 String get enable => '启用';
133
134 @override
135 String get proceed_anyway => '仍然继续';
136
137 @override
138 String get test_connection => '测试连接';
139
140 @override
141 String get testing => '正在测试...';
142
143 @override
144 String get connection_successful => '连接成功!';
145
146 @override
147 String get connection_failed => '连接失败。请检查您的设置。';
148
149 @override
150 String get save_continue => '保存并继续';
151
152 @override
153 String get save_changes => '保存更改';
154
155 @override
156 String get finish_setup => '完成设置';
157
158 @override
159 String get start_new_chat => '开始新聊天';
160
161 @override
162 String get cannot_undo => '此操作无法撤销。';
163
164 @override
165 String get ram_warning => '内存警告';
166
167 @override
168 String get recommended => '推荐';
169
170 @override
171 String get may_be_large => '可能对于此设备来说过大';
172
173 @override
174 String get calculating => '正在计算...';
175
176 @override
177 String get download_failed => '下载失败';
178
179 @override
180 String get downloaded => '已下载';
181
182 @override
183 String get not_downloaded => '未下载';
184
185 @override
186 String get installed => '已安装';
187
188 @override
189 String get not_installed => '未安装';
190
191 @override
192 String get loading => '正在加载...';
193
194 @override
195 String get thinking => '正在思考';
196
197 @override
198 String get processing => '正在处理...';
199
200 @override
201 String get initializing => '正在初始化...';
202
203 @override
204 String get ready => '就绪';
205
206 @override
207 String get preparing_app => '正在准备应用...';
208
209 @override
210 String get initializing_services => '正在初始化服务...';
211
212 @override
213 String get configuring_server => '正在配置服务器...';
214
215 @override
216 String get startup_failed => '启动失败';
217
218 @override
219 String get something_went_wrong => '出了点问题';
220
221 @override
222 String get delete_model_title => '删除模型';
223
224 @override
225 String delete_model_body(String name) {
226 return '您确定要删除 $name 吗?';
227 }
228
229 @override
230 String delete_model_body_with_size(String name, String size) {
231 return '您确定要删除 $name 吗?这释放大约 $size 的空间。\n\n如有需要,您稍后可以重新下载此模型。';
232 }
233
234 @override
235 String get delete_voice_title => '删除语音';
236
237 @override
238 String delete_voice_body(String name, String size) {
239 return '您确定要删除 $name 吗?这释放大约 $size 的空间。\n\n如有需要,您稍后可以重新下载此语音。';
240 }
241
242 @override
243 String get delete_server_title => '删除服务器';
244
245 @override
246 String delete_server_body(String name) {
247 return '您确定要删除 \"$name\" 吗?此操作无法撤销。';
248 }
249
250 @override
251 String get delete_conversation_title => '删除对话吗?';
252
253 @override
254 String delete_conversation_body(String title) {
255 return '您确定要删除 \"$title\" 吗?此操作无法撤销。';
256 }
257
258 @override
259 String get delete_message_title => '删除消息吗?';
260
261 @override
262 String delete_persona_title(String name) {
263 return '删除 \"$name\" 吗?';
264 }
265
266 @override
267 String get delete_persona_body => '此操作无法撤销。';
268
269 @override
270 String get delete_builtin_persona_body => '这是一个内置角色。您稍后可以在“设置”中将其恢复。';
271
272 @override
273 String get restore_builtin_personas => '恢复默认角色';
274
275 @override
276 String get restore_builtin_personas_desc => '重新添加您已删除的任何内置角色';
277
278 @override
279 String get restore_builtin_personas_success => '已恢复默认角色';
280
281 @override
282 String get clear_personas => '清除角色';
283
284 @override
285 String get enable_image_compression => '发送前压缩图片';
286
287 @override
288 String get enable_image_compression_desc => '调整并压缩附加图片的大小,以使上传大小保持在服务器限制内';
289
290 @override
291 String get image_compression_level => '压缩强度';
292
293 @override
294 String get image_compression_level_desc => '较高的压缩强度会生成质量较低但上传更小的图片';
295
296 @override
297 String get image_compression_level_low => '低';
298
299 @override
300 String get image_compression_level_medium => '中';
301
302 @override
303 String get image_compression_level_high => '高';
304
305 @override
306 String get sort_models_tooltip => '排序模型';
307
308 @override
309 String get sort_by_favorites => '收藏优先';
310
311 @override
312 String get sort_by_name => '名称 (A-Z)';
313
314 @override
315 String get sort_by_size_smallest => '大小 (从小到大)';
316
317 @override
318 String get sort_by_size_largest => '大小 (从大到小)';
319
320 @override
321 String get sort_by_context_length => '上下文长度';
322
323 @override
324 String bulk_ai_rename_progress(int done, int total) {
325 return '正在重命名 $done/$total...';
326 }
327
328 @override
329 String selected_count(int count) {
330 return '已选择 $count 个';
331 }
332
333 @override
334 String get ai_rename_tooltip => '使用 AI 重命名所选内容';
335
336 @override
337 String get new_chat_in_folder_tooltip => '在此文件夹中新建聊天';
338
339 @override
340 String total_tokens_count(int count) {
341 return '$count 个 Token';
342 }
343
344 @override
345 String get smart_replies_use_persona => '在智能回复中应用角色';
346
347 @override
348 String get smart_replies_use_persona_desc => '建议的回复将符合当前启用角色的语气,而不是通用的助手语气';
349
350 @override
351 String get keep_persona_on_new_chat => '新聊天保留角色';
352
353 @override
354 String get keep_persona_on_new_chat_desc => '开始新聊天时不要清除选定的角色';
355
356 @override
357 String get role_swap_button_enabled => '显示角色切换按钮';
358
359 @override
360 String get role_swap_button_enabled_desc =>
361 '在聊天输入框中显示一个按钮,允许您以助手而非用户的身份发送消息,而不生成任何回复';
362
363 @override
364 String get send_as_user_tooltip => '以用户身份发送';
365
366 @override
367 String get send_as_assistant_tooltip => '以助手身份发送 (无回复)';
368
369 @override
370 String get insert_without_generating_tooltip => '仅插入不生成回复';
371
372 @override
373 String get token_usage_title => 'Token 使用情况';
374
375 @override
376 String get total_tokens_label => '已用 Token';
377
378 @override
379 String get usage_percent_label => '已用上下文';
380
381 @override
382 String get export_choice_title => '导出';
383
384 @override
385 String get export_choice_body => '您希望如何导出此内容?';
386
387 @override
388 String get copy_to_clipboard => '复制到剪贴板';
389
390 @override
391 String bulk_export_conversations_success(int count) {
392 return '已成功导出 $count 个对话';
393 }
394
395 @override
396 String get bulk_ai_rename_confirm_title => '使用 AI 重命名?';
397
398 @override
399 String bulk_ai_rename_confirm_body(int count) {
400 return '这将请求 AI 为每个选定的 $count 个对话生成新标题,替换其当前的标题。此操作可能需要一些时间,且无法撤销。';
401 }
402
403 @override
404 String get sort_by_modified_date => '最近修改';
405
406 @override
407 String get sort_by_created_date => '创建日期';
408
409 @override
410 String get sort_title => '排序';
411
412 @override
413 String get clear_conversation_title => '清除对话吗?';
414
415 @override
416 String get clear_conversation_body => '这会删除此对话中的所有消息。';
417
418 @override
419 String get clear => '清除';
420
421 @override
422 String label_completed(String label) {
423 return '$label 已完成';
424 }
425
426 @override
427 String error_with_message(String error) {
428 return '错误: $error';
429 }
430
431 @override
432 String preview_failed(String error) {
433 return '预览失败: $error';
434 }
435
436 @override
437 String loading_model(String modelId) {
438 return '正在加载 $modelId...';
439 }
440
441 @override
442 String model_loaded(String modelId, String backend) {
443 return '模型已加载: $modelId ($backend)';
444 }
445
446 @override
447 String get no_model_loaded => '未加载任何模型。点击 “管理设备端模型” 以下载并加载模型。';
448
449 @override
450 String loading_model_error(String error) {
451 return '错误: $error';
452 }
453
454 @override
455 String get delete_conversation => '删除对话吗?';
456
457 @override
458 String get nav_history => '历史';
459
460 @override
461 String get nav_servers => '服务器';
462
463 @override
464 String get nav_local_models => '本地模型';
465
466 @override
467 String get nav_tts => '语音合成';
468
469 @override
470 String get nav_personas => '角色';
471
472 @override
473 String get nav_settings => '设置';
474
475 @override
476 String get nav_new_chat => '新聊天';
477
478 @override
479 String get search_hint => '搜索对话...';
480
481 @override
482 String get no_server_selected => '未选择服务器';
483
484 @override
485 String get switch_server => '切换服务器';
486
487 @override
488 String get switch_server_subtitle => '选择要连接的服务器';
489
490 @override
491 String get manage_servers => '管理服务器';
492
493 @override
494 String get open_source => '开源';
495
496 @override
497 String get open_source_desc => 'LocalMind 是开源项目。可在 GitHub 上关注我们的进展或参与贡献。';
498
499 @override
500 String get star_on_github => '在 GitHub 上点亮 Star';
501
502 @override
503 String get add_more => '添加更多';
504
505 @override
506 String get on_github => '在 GitHub 上';
507
508 @override
509 String get could_not_open_github => '无法打开 GitHub。';
510
511 @override
512 String get settings_title => '设置';
513
514 @override
515 String get settings_appearance => '外观';
516
517 @override
518 String get settings_language => '语言';
519
520 @override
521 String get language_system_default => '系统默认';
522
523 @override
524 String get settings_tts => '语音合成 (TTS)';
525
526 @override
527 String get settings_android_assistant => 'Android 助手';
528
529 @override
530 String get assistant_default_title => '默认语音助手';
531
532 @override
533 String get assistant_default_description =>
534 '将 Localmind 设置为 Android 系统默认的语音助手。';
535
536 @override
537 String get assistant_status_active => 'Localmind 已设置为默认助手';
538
539 @override
540 String get assistant_status_available => '可将 Localmind 设置为默认助手';
541
542 @override
543 String get assistant_status_manual => '打开系统设置并手动选择 Localmind';
544
545 @override
546 String get assistant_status_unsupported => '默认助手设置仅适用于 Android 7.0+';
547
548 @override
549 String get assistant_status_checking => '正在检查助手状态…';
550
551 @override
552 String get assistant_set_default => '设置默认助手';
553
554 @override
555 String get assistant_open_settings => '打开助手设置';
556
557 @override
558 String assistant_error(Object error) {
559 return '错误: $error';
560 }
561
562 @override
563 String get settings_behavior => '行为';
564
565 @override
566 String get settings_on_device => '设备端推理';
567
568 @override
569 String get settings_default_server => '默认服务器';
570
571 @override
572 String get settings_default_persona => '默认角色';
573
574 @override
575 String get settings_default_model => '默认模型';
576
577 @override
578 String get settings_default_model_desc => '开始新聊天时自动选择。';
579
580 @override
581 String get settings_privacy => '隐私';
582
583 @override
584 String get settings_data_management => '数据管理';
585
586 @override
587 String get settings_about => '关于';
588
589 @override
590 String get theme => '主题';
591
592 @override
593 String get theme_system => '系统';
594
595 @override
596 String get theme_light => '亮色';
597
598 @override
599 String get theme_dark => '暗色';
600
601 @override
602 String get theme_claude => 'Claude';
603
604 @override
605 String get font_size => '字体大小';
606
607 @override
608 String get font_size_desc => '调整聊天中的文本大小。';
609
610 @override
611 String get font_preview => '敏捷的棕色狐狸跳过那只懒狗。';
612
613 @override
614 String get code_theme_dark => '代码主题 (暗色)';
615
616 @override
617 String get code_theme_light => '代码主题 (亮色)';
618
619 @override
620 String get code_theme_desc => '选择代码块的语法高亮主题。';
621
622 @override
623 String get tts_engine => 'TTS 引擎';
624
625 @override
626 String get tts_engine_system => '系统 TTS';
627
628 @override
629 String get tts_engine_kitten => 'Kitten TTS';
630
631 @override
632 String get voice => '语音';
633
634 @override
635 String get voice_female => '女声';
636
637 @override
638 String get voice_male => '男声';
639
640 @override
641 String get voice_other => '其他';
642
643 @override
644 String get tts_speed => 'TTS 速度';
645
646 @override
647 String get tts_speed_desc => '调整播放速率。';
648
649 @override
650 String get manage_tts_models => '管理 TTS 模型';
651
652 @override
653 String get manage_on_device_models => '管理设备端模型';
654
655 @override
656 String get enable_smart_reply => '设备端智能回复';
657
658 @override
659 String get ai_user_response_enabled => 'AI 用户消息 (长按发送)';
660
661 @override
662 String get ai_user_response_enabled_desc => '长按发送按钮 3 秒钟以让 AI 撰写并发送您的下一条消息';
663
664 @override
665 String get ai_user_response_tooltip => '使用 AI 生成用户消息';
666
667 @override
668 String get streaming_responses => '流式响应';
669
670 @override
671 String get auto_generate_titles => '自动生成标题';
672
673 @override
674 String get send_on_enter => '按 Enter 键发送';
675
676 @override
677 String get show_system_messages => '显示系统消息';
678
679 @override
680 String get show_system_messages_desc => '当没有选定角色时,每次请求都发送默认的助手系统提示词';
681
682 @override
683 String get show_system_messages_in_chat => '在聊天中显示系统消息';
684
685 @override
686 String get show_system_messages_in_chat_desc =>
687 '将系统消息 (例如来自导入的备份) 作为对话中的可见气泡显示';
688
689 @override
690 String get auto_collapse_thinking => '自动折叠思考过程';
691
692 @override
693 String get auto_collapse_thinking_desc => '存在主要回复时,在生成完成后自动折叠推理过程';
694
695 @override
696 String get haptic_feedback => '触觉反馈';
697
698 @override
699 String get enable_mcp => '启用 MCP';
700
701 @override
702 String get new_chat_mcp_default => '新聊天默认启用 MCP';
703
704 @override
705 String get show_data_indicator => '显示数据指示器';
706
707 @override
708 String get privacy_info => '\"LocalMind 绝不查看您的数据\"';
709
710 @override
711 String get delete_all_conversations => '删除所有对话';
712
713 @override
714 String get reset_settings_defaults => '重置设置至默认值';
715
716 @override
717 String get chat_title => 'LocalMind';
718
719 @override
720 String get chat_parameters_tooltip => '聊天参数';
721
722 @override
723 String get change_persona => '更换角色';
724
725 @override
726 String get set_persona => '设置角色';
727
728 @override
729 String get remove_persona => '删除角色';
730
731 @override
732 String get clear_conversation => '清除对话';
733
734 @override
735 String get connection_error => '连接错误。请检查您的服务器。';
736
737 @override
738 String get disconnected => '与服务器断开连接。';
739
740 @override
741 String get configure => '配置';
742
743 @override
744 String get select_model => '选择模型';
745
746 @override
747 String get select_persona => '选择角色';
748
749 @override
750 String get manage_personas => '管理角色';
751
752 @override
753 String get personas_combine_hint => '选定的角色将被合并';
754
755 @override
756 String get start_conversation => '开始对话';
757
758 @override
759 String get recent_chats => '最近聊天';
760
761 @override
762 String get see_all => '查看全部';
763
764 @override
765 String get quick_write => '帮我写一个函数';
766
767 @override
768 String get quick_explain => '解释这段代码';
769
770 @override
771 String get quick_debug => '帮我调试这个';
772
773 @override
774 String get quick_async => '我该如何使用 async/await?';
775
776 @override
777 String get history_missing_title => '历史记录丢失';
778
779 @override
780 String get history_missing_desc => '此聊天中的消息已被删除,或历史记录已损坏。';
781
782 @override
783 String get technical_details => '技术细节';
784
785 @override
786 String get last_error => '上次错误:';
787
788 @override
789 String get copy_info => '复制信息';
790
791 @override
792 String get conversation_id => '对话 ID';
793
794 @override
795 String get created_at => '创建于';
796
797 @override
798 String get expected_messages => '预期消息';
799
800 @override
801 String get debug_dialog_desc => '用以帮助识别同步问题的诊断信息。';
802
803 @override
804 String get chat_input_hint => '问任何问题';
805
806 @override
807 String get send_message_tooltip => '发送消息';
808
809 @override
810 String get stop_generation_tooltip => '停止生成';
811
812 @override
813 String get attach_images_tooltip => '附加图片';
814
815 @override
816 String get start_listening_tooltip => '开始聆听';
817
818 @override
819 String get stop_listening_tooltip => '停止聆听';
820
821 @override
822 String tool_label(String toolCallId) {
823 return '工具: $toolCallId';
824 }
825
826 @override
827 String get tool_unknown => '工具: 未知';
828
829 @override
830 String get message_options => '消息选项';
831
832 @override
833 String get copy_markdown => '复制为 Markdown';
834
835 @override
836 String get copied_markdown => '已复制为 Markdown';
837
838 @override
839 String get read_aloud => '朗读';
840
841 @override
842 String get stop_reading => '停止朗读';
843
844 @override
845 String get more => '更多';
846
847 @override
848 String character_count(int length) {
849 return '$length 个字符';
850 }
851
852 @override
853 String get edit_message => '编辑消息';
854
855 @override
856 String get edit_message_desc => '保存将移除下方助手的回复并重新生成。';
857
858 @override
859 String get save_regenerate => '保存并重新生成';
860
861 @override
862 String get chat_settings_title => '聊天设置';
863
864 @override
865 String get reset_defaults => '重置默认值';
866
867 @override
868 String get parameters_tab => '参数';
869
870 @override
871 String get mcp_tab => 'MCP';
872
873 @override
874 String get temperature => '温度';
875
876 @override
877 String get temperature_desc => '控制随机性:较高 = 创意,较低 = 专注';
878
879 @override
880 String get top_p => 'Top P';
881
882 @override
883 String get top_p_desc => '核采样阈值';
884
885 @override
886 String get max_tokens => '最大 Token 数';
887
888 @override
889 String get max_tokens_desc => '响应限制';
890
891 @override
892 String get context_length => '上下文长度';
893
894 @override
895 String get context_length_desc => '历史窗口';
896
897 @override
898 String get mcp_disabled_warning => 'MCP 已在全局被禁用。请在设置中启用以使用这些功能。';
899
900 @override
901 String get mcp_enable_chat => '为此聊天启用 MCP';
902
903 @override
904 String get auto_execute_tools => '自动执行工具';
905
906 @override
907 String get beta_label => 'Beta';
908
909 @override
910 String get experimental_label => '实验性';
911
912 @override
913 String get add_ephemeral_mcp => '添加临时 MCP 服务器';
914
915 @override
916 String get mcp_label_placeholder => '标签';
917
918 @override
919 String get mcp_url_placeholder => 'URL (https://...)';
920
921 @override
922 String get active_integrations => '活动集成';
923
924 @override
925 String get import_mcp_json => '导入 JSON';
926
927 @override
928 String get import_mcp_json_dialog_title => '导入 MCP 配置 JSON';
929
930 @override
931 String get import_mcp_json_instructions =>
932 '直接从 LM Studio (mcp.json) 复制 mcpServers JSON 或在下方粘贴插件数组:';
933
934 @override
935 String get import_mcp_json_placeholder => '在此粘贴 mcpServers JSON 或插件列表...';
936
937 @override
938 String mcp_import_success(int count) {
939 return '已成功导入 $count 个集成';
940 }
941
942 @override
943 String get mcp_import_failed => 'JSON 中未找到有效的 MCP 集成';
944
945 @override
946 String get enable_notifications => '启用通知';
947
948 @override
949 String get enable_notifications_desc => '在模型下载完成时获得通知。';
950
951 @override
952 String get chat_history_title => '聊天历史';
953
954 @override
955 String get conversation_just_now => '刚刚';
956
957 @override
958 String conversation_minutes_ago(int minutes) {
959 return '$minutes分钟前';
960 }
961
962 @override
963 String conversation_hours_ago(int hours) {
964 return '$hours小时前';
965 }
966
967 @override
968 String get conversation_yesterday => '昨天';
969
970 @override
971 String conversation_days_ago(int days) {
972 return '$days天前';
973 }
974
975 @override
976 String conversation_date(int month, int day, int year) {
977 return '$month/$day/$year';
978 }
979
980 @override
981 String get options_tooltip => '选项';
982
983 @override
984 String get no_results_found => '未找到结果';
985
986 @override
987 String get no_conversations_yet => '尚无对话';
988
989 @override
990 String get try_different_search => '尝试不同的搜索词';
991
992 @override
993 String get start_new_conversation => '开始新对话';
994
995 @override
996 String get rename_conversation => '重命名对话';
997
998 @override
999 String get enter_new_title => '输入新标题';
1000
1001 @override
1002 String get pinned_section => '已 pin';
1003
1004 @override
1005 String get today_section => '今天';
1006
1007 @override
1008 String get yesterday_section => '昨天';
1009
1010 @override
1011 String get previous_7_days => '前 7 天';
1012
1013 @override
1014 String get previous_30_days => '前 30 天';
1015
1016 @override
1017 String get older_section => '更早';
1018
1019 @override
1020 String get onboarding_choose_language => '选择语言';
1021
1022 @override
1023 String get onboarding_choose_language_desc => '选择您首选的语言。您随时可以在设置中更改此项。';
1024
1025 @override
1026 String get onboarding_localmind => 'LOCALMIND';
1027
1028 @override
1029 String get onboarding_connect_server => '连接您的\n服务器';
1030
1031 @override
1032 String get onboarding_connect_desc =>
1033 '连接到 LM Studio、Ollama 或\nOpenRouter,开启您的私有 AI\n体验。';
1034
1035 @override
1036 String get openai_compatible_api => 'OpenAI 兼容 API';
1037
1038 @override
1039 String get https_requires_ssl => 'HTTPS 需要 SSL';
1040
1041 @override
1042 String get most_local_setups_use_http => '大多数本地配置使用 http://';
1043
1044 @override
1045 String get onboarding_welcome => '欢迎使用 LocalMind';
1046
1047 @override
1048 String get server_type_on_device => '设备端';
1049
1050 @override
1051 String get server_type_lm_studio => 'LM Studio';
1052
1053 @override
1054 String get server_type_ollama => 'Ollama';
1055
1056 @override
1057 String get server_type_ollama_cloud => 'Ollama Cloud';
1058
1059 @override
1060 String get server_type_ollama_cloud_sub => '托管云服务';
1061
1062 @override
1063 String get server_type_ollama_cloud_display => 'Ollama Cloud';
1064
1065 @override
1066 String get server_address_ollama_cloud => 'ollama.com';
1067
1068 @override
1069 String get ollama_cloud_disclosure =>
1070 '连接 Ollama Cloud 后,您的聊天消息和输入将被发送至 Ollama 的托管服务器进行推理。LocalMind 不会跟踪或存储您的对话。您可以随时在 ollama.com/settings/keys 撤销此密钥。';
1071
1072 @override
1073 String get api_key_required_ollama_cloud => 'Ollama Cloud 需要 API 密钥';
1074
1075 @override
1076 String get api_key_hint_ollama_cloud => '粘贴您的 Ollama Cloud API 密钥';
1077
1078 @override
1079 String get add_server_ollama_cloud_subtitle =>
1080 '使用来自 ollama.com/settings/keys 的 API 密钥连接到 Ollama Cloud,以访问托管云端模型。';
1081
1082 @override
1083 String get add_server_openrouter_subtitle =>
1084 '使用有效的 API 密钥通过 OpenRouter 连接,并为此配置文件做好模型路由准备。';
1085
1086 @override
1087 String get add_server_requesty_subtitle =>
1088 '使用有效的 API 密钥通过 Requesty 连接,并为此配置文件做好模型路由准备。';
1089
1090 @override
1091 String get add_server_endpoint_subtitle => '配置本地或自托管端点,然后在保存前验证连接。';
1092
1093 @override
1094 String get server_type_openrouter => 'OpenRouter';
1095
1096 @override
1097 String get server_type_requesty => 'Requesty';
1098
1099 @override
1100 String get server_type_openrouter_sub => '统一云';
1101
1102 @override
1103 String get server_type_requesty_sub => '统一云';
1104
1105 @override
1106 String get ready_continue => '准备好继续';
1107
1108 @override
1109 String get waiting_selection => '等待选择';
1110
1111 @override
1112 String get setup_connection => '设置连接';
1113
1114 @override
1115 String setup_connection_desc(String server) {
1116 return '配置您的 $server 服务器以开始聊天。';
1117 }
1118
1119 @override
1120 String get server_name => '服务器名称';
1121
1122 @override
1123 String get name_required => '需要名称';
1124
1125 @override
1126 String get name_max_50 => '最多 50 个字符';
1127
1128 @override
1129 String get host_label => '主机 / IP 地址';
1130
1131 @override
1132 String get host_required => '需要主机地址';
1133
1134 @override
1135 String get port_label => '端口';
1136
1137 @override
1138 String get port_required => '需要端口';
1139
1140 @override
1141 String get port_invalid => '必须是数字';
1142
1143 @override
1144 String get port_range => '输入有效的端口号 (1-65535)';
1145
1146 @override
1147 String get api_key_required => 'API 密钥 *';
1148
1149 @override
1150 String get api_key_optional => 'API 密钥 (可选)';
1151
1152 @override
1153 String get api_key_required_openrouter => 'OpenRouter 需要 API 密钥';
1154
1155 @override
1156 String get api_key_required_requesty => 'Requesty 需要 API 密钥';
1157
1158 @override
1159 String get api_key_format => 'OpenRouter API 密钥以 sk- 开头';
1160
1161 @override
1162 String get my_server_hint => '我的服务器';
1163
1164 @override
1165 String get name_length_validation => '名称必须在 50 个字符以内';
1166
1167 @override
1168 String get host_valid => '输入有效的主机名或 IP 地址';
1169
1170 @override
1171 String get api_key_hint_openrouter => 'sk-...';
1172
1173 @override
1174 String get api_key_hint_requesty => 'rqsty-...';
1175
1176 @override
1177 String get api_key_hint_generic => '适用于已验证的服务器';
1178
1179 @override
1180 String get update_server => '更新服务器';
1181
1182 @override
1183 String get save_server => '保存服务器';
1184
1185 @override
1186 String get server_updated => '服务器已更新';
1187
1188 @override
1189 String get server_added => '服务器已添加';
1190
1191 @override
1192 String get download_model_title => '下载模型';
1193
1194 @override
1195 String get download_model_desc => '选择要下载的模型。\n它将在您的设备上本地运行。';
1196
1197 @override
1198 String get on_device_android_only => '设备端推理当前仅可在 Android 上使用。';
1199
1200 @override
1201 String get total_ram => '总内存';
1202
1203 @override
1204 String get available => '可用';
1205
1206 @override
1207 String ram_min_required(String fileSize) {
1208 return '最低要求 $fileSize GB 内存 (RAM)';
1209 }
1210
1211 @override
1212 String download_progress(String percent, String speed) {
1213 return '$percent% • $speed';
1214 }
1215
1216 @override
1217 String eta_label(String eta) {
1218 return '预计剩余时间: $eta';
1219 }
1220
1221 @override
1222 String paused_progress(String percent) {
1223 return '已暂停 - $percent%';
1224 }
1225
1226 @override
1227 String ram_warning_body_download(String ram, String totalMemory) {
1228 return '此模型需要至少 $ram GB 内存,但您的设备仅有 $totalMemory。它可能无法正常运行,或会导致应用崩溃。';
1229 }
1230
1231 @override
1232 String ram_warning_body_load(String availableRAM, String ram) {
1233 return '您的设备当前有 $availableRAM 可用内存,但此模型推荐至少 $ram GB。加载它可能会失败或导致系统不稳定。';
1234 }
1235
1236 @override
1237 String get choose_theme => '选择主题';
1238
1239 @override
1240 String get choose_theme_desc => '个性化应用程序外观。您随时可以在设置中更改此项。';
1241
1242 @override
1243 String get theme_card_system => '系统';
1244
1245 @override
1246 String get theme_card_system_sub => '匹配您的设备设置';
1247
1248 @override
1249 String get theme_card_light => '亮色';
1250
1251 @override
1252 String get theme_card_light_sub => '干净明亮';
1253
1254 @override
1255 String get theme_card_dark => '暗色';
1256
1257 @override
1258 String get theme_card_dark_sub => '保护眼睛';
1259
1260 @override
1261 String get theme_card_claude => 'Claude';
1262
1263 @override
1264 String get theme_card_claude_sub => '温馨的桃色色调主题';
1265
1266 @override
1267 String get stay_updated => '保持更新';
1268
1269 @override
1270 String get stay_updated_desc => '在您的 AI 模型下载完成或长时间运行的任务结束时获得通知。';
1271
1272 @override
1273 String get notification_benefit_downloads => '模型下载进度';
1274
1275 @override
1276 String get notification_benefit_completions => '生成完成';
1277
1278 @override
1279 String get notification_benefit_background => '后台任务状态';
1280
1281 @override
1282 String get allow_notifications => '允许通知';
1283
1284 @override
1285 String get servers_title => '服务器';
1286
1287 @override
1288 String get no_servers_yet => '尚无服务器';
1289
1290 @override
1291 String get no_servers_desc => '添加您的首个服务器以开始与 AI 模型聊天。';
1292
1293 @override
1294 String get add_server => '添加服务器';
1295
1296 @override
1297 String switched_to_server(String name) {
1298 return '已切换到 $name';
1299 }
1300
1301 @override
1302 String get edit_server => '编辑服务器';
1303
1304 @override
1305 String get add_server_title => '添加服务器';
1306
1307 @override
1308 String get server_type_label => '服务器类型';
1309
1310 @override
1311 String get server_icon_label => '服务器图标';
1312
1313 @override
1314 String get default_icon => '默认图标';
1315
1316 @override
1317 String get server_type_lm_studio_display => 'LM Studio';
1318
1319 @override
1320 String get server_type_openai_display => '兼容 OpenAI';
1321
1322 @override
1323 String get server_type_ollama_display => 'Ollama';
1324
1325 @override
1326 String get server_type_openrouter_display => 'OpenRouter';
1327
1328 @override
1329 String get server_type_requesty_display => 'Requesty';
1330
1331 @override
1332 String get server_type_on_device_display => '设备端';
1333
1334 @override
1335 String get server_address_openrouter => 'openrouter.ai';
1336
1337 @override
1338 String get server_address_requesty => 'router.requesty.ai';
1339
1340 @override
1341 String get server_address_on_device => '本地推理';
1342
1343 @override
1344 String server_address_format(String host, String port) {
1345 return '$host:$port';
1346 }
1347
1348 @override
1349 String get default_badge => '默认';
1350
1351 @override
1352 String get set_as_default => '设为默认';
1353
1354 @override
1355 String get select_icon => '选择图标';
1356
1357 @override
1358 String get select_icon_desc => '为您的服务器选择一个图标';
1359
1360 @override
1361 String get search_icons_hint => '搜索图标...';
1362
1363 @override
1364 String get server_icon_stack => '服务器堆栈';
1365
1366 @override
1367 String get server_icon_stack2 => '服务器堆栈 02';
1368
1369 @override
1370 String get server_icon_stack3 => '服务器堆栈 03';
1371
1372 @override
1373 String get server_icon_cloud => '云';
1374
1375 @override
1376 String get server_icon_cloud_server => '云端服务器';
1377
1378 @override
1379 String get server_icon_mcp => 'MCP 服务器';
1380
1381 @override
1382 String get server_icon_database => '数据库';
1383
1384 @override
1385 String get server_icon_database1 => '数据库 01';
1386
1387 @override
1388 String get server_icon_database2 => '数据库 02';
1389
1390 @override
1391 String get server_icon_cpu => 'CPU';
1392
1393 @override
1394 String get server_icon_chip => '芯片';
1395
1396 @override
1397 String get server_icon_chip2 => '芯片 02';
1398
1399 @override
1400 String get server_icon_computer => '电脑';
1401
1402 @override
1403 String get server_icon_laptop => '笔记本电脑';
1404
1405 @override
1406 String get server_icon_terminal => '电脑终端';
1407
1408 @override
1409 String get server_icon_code => '代码';
1410
1411 @override
1412 String get server_icon_ai_brain => 'AI 大脑';
1413
1414 @override
1415 String get server_icon_ai_brain2 => 'AI 大脑 02';
1416
1417 @override
1418 String get server_icon_ai_cloud => 'AI 云端';
1419
1420 @override
1421 String get server_icon_ai_network => 'AI 网络';
1422
1423 @override
1424 String get server_icon_ai_chat => 'AI 聊天';
1425
1426 @override
1427 String get server_icon_cellular => '蜂窝网络';
1428
1429 @override
1430 String get server_icon_plug1 => '插头 01';
1431
1432 @override
1433 String get server_icon_plug2 => '插头 02';
1434
1435 @override
1436 String get server_icon_bot => '机器人';
1437
1438 @override
1439 String get server_icon_bot2 => '机器人 02';
1440
1441 @override
1442 String get server_icon_robotic => '机器人声音';
1443
1444 @override
1445 String get server_icon_rocket => '火箭';
1446
1447 @override
1448 String get server_icon_star => 'Star';
1449
1450 @override
1451 String get server_icon_settings1 => '设置 01';
1452
1453 @override
1454 String get server_icon_settings2 => '设置 02';
1455
1456 @override
1457 String get server_icon_home1 => '主页 01';
1458
1459 @override
1460 String get server_icon_home2 => '主页 02';
1461
1462 @override
1463 String get server_icon_folder1 => '文件夹 01';
1464
1465 @override
1466 String get server_icon_folder2 => '文件夹 02';
1467
1468 @override
1469 String get server_icon_file1 => '文件 01';
1470
1471 @override
1472 String get server_icon_lock => '锁';
1473
1474 @override
1475 String get server_icon_key => '钥匙 01';
1476
1477 @override
1478 String get server_icon_link => '链接 01';
1479
1480 @override
1481 String get server_icon_globe => '地球仪';
1482
1483 @override
1484 String get server_icon_api => 'API';
1485
1486 @override
1487 String get server_icon_arrow_right => '右箭头 01';
1488
1489 @override
1490 String get server_icon_check => '勾选圆圈';
1491
1492 @override
1493 String get server_icon_alert => '警报圆圈';
1494
1495 @override
1496 String get server_icon_info => '信息圆圈';
1497
1498 @override
1499 String get server_icon_zap => 'Zap';
1500
1501 @override
1502 String get server_icon_cloud_upload => '云端上传';
1503
1504 @override
1505 String get server_icon_cloud_download => '云端下载';
1506
1507 @override
1508 String get server_icon_refresh => '刷新';
1509
1510 @override
1511 String get server_icon_hard_drive => '硬盘';
1512
1513 @override
1514 String get server_icon_drive => '驱动器';
1515
1516 @override
1517 String get personas_title => '角色';
1518
1519 @override
1520 String get persona_category_general => '通用';
1521
1522 @override
1523 String get persona_category_coding => '编程';
1524
1525 @override
1526 String get persona_category_education => '教育';
1527
1528 @override
1529 String get persona_category_creative => '创意';
1530
1531 @override
1532 String get persona_builtin_section => '内置';
1533
1534 @override
1535 String get persona_my_section => '我的角色';
1536
1537 @override
1538 String get clone_edit => '克隆并编辑';
1539
1540 @override
1541 String get builtin_badge => '内置';
1542
1543 @override
1544 String get no_personas_found => '未找到任何角色';
1545
1546 @override
1547 String get no_personas_desc => '创建您的第一个角色以定制 AI 行为。';
1548
1549 @override
1550 String get edit_persona => '编辑角色';
1551
1552 @override
1553 String get create_persona => '创建角色';
1554
1555 @override
1556 String get create_persona_button => '创建';
1557
1558 @override
1559 String get emoji_label => '表情符号';
1560
1561 @override
1562 String get name_label => '名称';
1563
1564 @override
1565 String get my_persona_hint => '我的角色';
1566
1567 @override
1568 String get category_label => '分类';
1569
1570 @override
1571 String get description_optional => '描述 (可选)';
1572
1573 @override
1574 String get description_hint => '此角色要做的是...';
1575
1576 @override
1577 String get system_prompt => '系统提示词';
1578
1579 @override
1580 String character_count_max(int currentLen) {
1581 return '$currentLen/4000';
1582 }
1583
1584 @override
1585 String get no_prompt_placeholder => '尚无提示词...';
1586
1587 @override
1588 String get prompt_hint => '你是一个得力的助手...';
1589
1590 @override
1591 String get prompt_required => '需要系统提示词';
1592
1593 @override
1594 String get prompt_max_chars => '最多 4000 个字符';
1595
1596 @override
1597 String get advanced_settings => '高级设置';
1598
1599 @override
1600 String get temperature_label => '温度 (0.0-2.0)';
1601
1602 @override
1603 String get top_p_label => 'Top P (0.0-1.0)';
1604
1605 @override
1606 String get temp_hint => '0.7';
1607
1608 @override
1609 String get top_p_hint => '0.9';
1610
1611 @override
1612 String get range_0_2 => '0.0-2.0';
1613
1614 @override
1615 String get range_0_1 => '0.0-1.0';
1616
1617 @override
1618 String get persona_updated => '角色已更新';
1619
1620 @override
1621 String get persona_created => '角色已创建';
1622
1623 @override
1624 String get tts_models_title => '语音合成模型';
1625
1626 @override
1627 String get always_available => '始终可用';
1628
1629 @override
1630 String get tts_system_desc => '使用您设备内置的语音合成引擎。\n无需额外下载。语音选择依赖您的设备系统设置。';
1631
1632 @override
1633 String get downloading_status => '正在下载...';
1634
1635 @override
1636 String tts_kitten_desc(String size) {
1637 return '拥有 8 种表现力声音的闪电般高速神经网络 TTS。\n需要下载 $size。';
1638 }
1639
1640 @override
1641 String tts_piper_desc(String size) {
1642 return '快速离线 Piper 语音,拥有 2 种极具表现力的声音。\n每个声音需要下载 $size。';
1643 }
1644
1645 @override
1646 String engine_spec(String sizeMb, String ramMb, int voiceCount) {
1647 return '$sizeMb MB · $ramMb MB 内存 · $voiceCount 种语音';
1648 }
1649
1650 @override
1651 String get on_device_models_title => '设备端模型';
1652
1653 @override
1654 String get settings_huggingface_token => 'Hugging Face 令牌(可选)';
1655
1656 @override
1657 String get settings_huggingface_token_desc =>
1658 '仅对受限模型必需(例如 Gemma)。可在 huggingface.co/settings/tokens 获取令牌。';
1659
1660 @override
1661 String get settings_huggingface_token_set => '令牌已保存';
1662
1663 @override
1664 String get settings_huggingface_token_cleared => '令牌已清除';
1665
1666 @override
1667 String get model_requires_huggingface_token => '需要 Hugging Face 令牌';
1668
1669 @override
1670 String get model_missing_huggingface_token =>
1671 '此模型在 Hugging Face 上受限。请在“设置 → 设备端推理”中添加令牌后再下载。';
1672
1673 @override
1674 String get set_huggingface_token => '设置令牌';
1675
1676 @override
1677 String get clear_huggingface_token => '清除';
1678
1679 @override
1680 String get edit_huggingface_token_dialog_title => 'Hugging Face 访问令牌';
1681
1682 @override
1683 String get huggingface_token_dialog_hint => 'hf_…';
1684
1685 @override
1686 String get server_type_ollama_desc => '本地 AI 引擎。无需 API 密钥。';
1687
1688 @override
1689 String get server_type_on_device_desc => '在您的手机上运行。某些模型需要 Hugging Face 令牌。';
1690
1691 @override
1692 String get server_type_lm_studio_desc => '本地 API 服务器。无需 API 密钥。';
1693
1694 @override
1695 String get available_models => '可用模型';
1696
1697 @override
1698 String get device_memory => '设备内存';
1699
1700 @override
1701 String get ram_usage => '内存占用';
1702
1703 @override
1704 String get memory_healthy => '健康';
1705
1706 @override
1707 String get memory_critical => '严重警告';
1708
1709 @override
1710 String get memory_low => '偏低';
1711
1712 @override
1713 String ram_used(String percent) {
1714 return '已使用 $percent%';
1715 }
1716
1717 @override
1718 String get available_ram => '可用内存';
1719
1720 @override
1721 String get total_capacity => '总容量';
1722
1723 @override
1724 String get loaded_status => '已加载';
1725
1726 @override
1727 String get inference_backend => '推理后端';
1728
1729 @override
1730 String get backend_ios_notice => 'iOS 上仅支持 CPU 后端。';
1731
1732 @override
1733 String get backend_cpu_desc => '适用于所有设备。兼容性最好。';
1734
1735 @override
1736 String get backend_gpu_desc => 'OpenCL 加速。在支持 of 设备上运行更快。';
1737
1738 @override
1739 String get backend_npu_desc => '厂商 NPU (高通/联发科)。最快的推理速度。';
1740
1741 @override
1742 String get select_model_title => '选择模型';
1743
1744 @override
1745 String get refresh_models => '刷新模型';
1746
1747 @override
1748 String get search_models_hint => '搜索模型...';
1749
1750 @override
1751 String get no_server_connected => '未连接服务器';
1752
1753 @override
1754 String get add_server_first => '请先添加服务器以查看可用模型。';
1755
1756 @override
1757 String get failed_load_models => '加载模型失败';
1758
1759 @override
1760 String get no_models_available => '无可用模型';
1761
1762 @override
1763 String no_models_match(String searchQuery) {
1764 return '没有匹配 \"$searchQuery\" 的模型';
1765 }
1766
1767 @override
1768 String model_load_failed(String error) {
1769 return '加载模型失败: $error';
1770 }
1771
1772 @override
1773 String model_unloaded_ollama(String name) {
1774 return '在 keep-alive 时间过去后,$name 将被自动卸载';
1775 }
1776
1777 @override
1778 String model_unloaded_success(String name) {
1779 return '$name 已成功卸载';
1780 }
1781
1782 @override
1783 String model_unload_failed(String error) {
1784 return '卸载模型失败: $error';
1785 }
1786
1787 @override
1788 String get unload_from_server => '从服务器卸载';
1789
1790 @override
1791 String context_chip(String ctx) {
1792 return '$ctx 上下文 (ctx)';
1793 }
1794
1795 @override
1796 String get unload_all_models => '卸载所有模型';
1797
1798 @override
1799 String loaded_models_count(int count) {
1800 return '已加载 $count 个模型';
1801 }
1802
1803 @override
1804 String get all_models_unloaded => '所有模型已卸载';
1805
1806 @override
1807 String get branch_chat => '分支聊天';
1808
1809 @override
1810 String get branch_chat_desc => '从此消息开始新建聊天';
1811
1812 @override
1813 String get edit_assistant_message_desc => '编辑助手消息的内容';
1814
1815 @override
1816 String switch_to_model(String modelName, Object model) {
1817 return '切换到模型 $model';
1818 }
1819
1820 @override
1821 String download_notification_title(String modelName) {
1822 return '正在下载 $modelName...';
1823 }
1824
1825 @override
1826 String get download_complete_notification => '下载完成!';
1827
1828 @override
1829 String download_complete_body(String modelName) {
1830 return '$modelName 已成功下载。';
1831 }
1832
1833 @override
1834 String download_failed_notification(String error) {
1835 return '下载失败: $error';
1836 }
1837
1838 @override
1839 String download_failed_body(String modelName) {
1840 return '下载 $modelName 失败。';
1841 }
1842
1843 @override
1844 String get engine_name_system => '系统 TTS';
1845
1846 @override
1847 String get engine_tagline_system => '内置设备引擎';
1848
1849 @override
1850 String get engine_name_kitten => 'Kitten TTS';
1851
1852 @override
1853 String get engine_tagline_kitten => '高速神经网络 TTS';
1854
1855 @override
1856 String get engine_name_sherpa => 'Sherpa ONNX VITS';
1857
1858 @override
1859 String get engine_tagline_sherpa => '离线 Piper 语音';
1860
1861 @override
1862 String get voice_jasper => 'Jasper';
1863
1864 @override
1865 String get voice_bella => 'Bella';
1866
1867 @override
1868 String get voice_bruno => 'Bruno';
1869
1870 @override
1871 String get voice_luna => 'Luna';
1872
1873 @override
1874 String get voice_hugo => 'Hugo';
1875
1876 @override
1877 String get voice_rosie => 'Rosie';
1878
1879 @override
1880 String get voice_leo => 'Leo';
1881
1882 @override
1883 String get voice_kiki => 'Kiki';
1884
1885 @override
1886 String get voice_lessac => 'Lessac (美音)';
1887
1888 @override
1889 String get voice_ryan => 'Ryan (美音)';
1890
1891 @override
1892 String get model_qwen_3 => 'Qwen 3 0.6B';
1893
1894 @override
1895 String get model_qwen_3_desc => '最小的通用聊天模型。响应速度快,内存消耗低。';
1896
1897 @override
1898 String get model_license_apache => 'Apache-2.0';
1899
1900 @override
1901 String get model_qwen_25 => 'Qwen 2.5 1.5B Instruct';
1902
1903 @override
1904 String get model_qwen_25_desc => '平衡的质量和大小。适合一般对话。';
1905
1906 @override
1907 String get model_deepseek => 'DeepSeek R1 Distill Qwen 1.5B';
1908
1909 @override
1910 String get model_deepseek_desc => '推理与思维链模型。最适合逻辑任务。';
1911
1912 @override
1913 String get model_license_mit => 'MIT';
1914
1915 @override
1916 String get model_gemma => 'Gemma 4 E2B Instruct';
1917
1918 @override
1919 String get model_gemma_desc => 'Google 旗舰模型。最高质量,需要更多内存。';
1920
1921 @override
1922 String export_header(String date) {
1923 return '*导出自 LocalMind — $date*';
1924 }
1925
1926 @override
1927 String get export_role_user => '## 👤 用户';
1928
1929 @override
1930 String get export_role_assistant => '## 🤖 助手';
1931
1932 @override
1933 String get export_role_system => '## ⚙️ 系统';
1934
1935 @override
1936 String get export_role_tool => '## 🔧 工具';
1937
1938 @override
1939 String get export_text_user => '[用户]';
1940
1941 @override
1942 String get export_text_assistant => '[助手]';
1943
1944 @override
1945 String get export_text_system => '[系统]';
1946
1947 @override
1948 String get export_text_tool => '[工具]';
1949
1950 @override
1951 String get export_label_user => '用户';
1952
1953 @override
1954 String get export_label_assistant => '助手';
1955
1956 @override
1957 String get export_label_system => '系统';
1958
1959 @override
1960 String get export_label_tool => '工具';
1961
1962 @override
1963 String get select_model_hint => '选择一个模型以开始聊天';
1964
1965 @override
1966 String get test_notification_title => '测试通知';
1967
1968 @override
1969 String get test_notification_body => '这是用于展示模型下载进度的测试通知。';
1970
1971 @override
1972 String get tts_supports_background => '支持后台播放(原生音频格式)';
1973
1974 @override
1975 String get tts_other_services_background_note => '注意:其他TTS服务支持后台播放(原生音频格式)。';
1976
1977 @override
1978 String get gguf_imported_models_title => 'Imported GGUF models';
1979
1980 @override
1981 String get gguf_imported_models_empty_subtitle =>
1982 'Import a GGUF from your device or add one from Hugging Face. Imported models run locally with llama.cpp.';
1983
1984 @override
1985 String get gguf_imported_models_ready =>
1986 'imported models ready for local inference.';
1987
1988 @override
1989 String get gguf_curated_models_subtitle =>
1990 'Curated on-device models you can download and manage inside LocalMind.';
1991
1992 @override
1993 String get gguf_only_supported =>
1994 'Only GGUF models are supported for this import.';
1995
1996 @override
1997 String get gguf_imported_from_local_file => 'imported from local file.';
1998
1999 @override
2000 String get gguf_import_failed => 'Failed to import GGUF model';
2001
2002 @override
2003 String get gguf_imported_from_huggingface => 'imported from Hugging Face.';
2004
2005 @override
2006 String get gguf_import_canceled => 'GGUF import canceled.';
2007
2008 @override
2009 String get gguf_enter_huggingface_url => 'Enter a Hugging Face GGUF URL.';
2010
2011 @override
2012 String get gguf_only_official_huggingface_urls =>
2013 'Only official Hugging Face GGUF URLs are supported.';
2014
2015 @override
2016 String get gguf_use_https_url =>
2017 'Use an HTTPS Hugging Face URL for GGUF import.';
2018
2019 @override
2020 String get gguf_url_must_point_to_file =>
2021 'The Hugging Face URL must point directly to a .gguf file.';
2022
2023 @override
2024 String get gguf_unable_to_detect_file_name =>
2025 'Unable to determine the GGUF file name.';
2026
2027 @override
2028 String get gguf_download_empty =>
2029 'The downloaded GGUF file was empty or missing.';
2030
2031 @override
2032 String get gguf_selected_file_missing =>
2033 'Selected model file does not exist.';
2034
2035 @override
2036 String get gguf_import_action => 'Import GGUF';
2037
2038 @override
2039 String get gguf_overview_title => 'Bring your own GGUF models';
2040
2041 @override
2042 String get gguf_overview_subtitle =>
2043 'Import a .gguf from local storage or download one straight from Hugging Face. Imported models stay on this device and load with llama.cpp.';
2044
2045 @override
2046 String get gguf_imported_count_label => 'imported';
2047
2048 @override
2049 String get gguf_local_files_label => 'local files';
2050
2051 @override
2052 String get gguf_huggingface_label => 'Hugging Face';
2053
2054 @override
2055 String get gguf_import_local_title => 'Import local GGUF';
2056
2057 @override
2058 String get gguf_import_local_subtitle => 'Copy a .gguf file from this device';
2059
2060 @override
2061 String get gguf_import_huggingface_title => 'Import from Hugging Face';
2062
2063 @override
2064 String get gguf_import_huggingface_subtitle =>
2065 'Paste a GGUF URL or repo path';
2066
2067 @override
2068 String get gguf_no_imported_title => 'No imported GGUF models yet';
2069
2070 @override
2071 String get gguf_no_imported_subtitle =>
2072 'You can bring your own GGUF file from device storage or paste a Hugging Face URL or repo path that points to a .gguf file.';
2073
2074 @override
2075 String get gguf_import_huggingface_dialog_title =>
2076 'Import GGUF from Hugging Face';
2077
2078 @override
2079 String get gguf_import_huggingface_dialog_subtitle =>
2080 'Paste a direct GGUF URL or a Hugging Face repo path like `owner/repo/blob/main/model.gguf`. Blob links are converted automatically.';
2081
2082 @override
2083 String get gguf_url_or_repo_path => 'GGUF URL or repo path';
2084
2085 @override
2086 String get paste => 'Paste';
2087
2088 @override
2089 String get gguf_browse => 'Browse GGUFs';
2090
2091 @override
2092 String get gguf_huggingface_token_ready => 'Hugging Face token ready';
2093
2094 @override
2095 String get gguf_huggingface_token_optional =>
2096 'Token optional but recommended';
2097
2098 @override
2099 String get gguf_huggingface_token_ready_desc =>
2100 'Your saved token will be used automatically for gated or private repositories.';
2101
2102 @override
2103 String get gguf_huggingface_token_optional_desc =>
2104 'Requires a Hugging Face token. Add one in Settings if this GGUF is gated or private.';
2105
2106 @override
2107 String get gguf_downloading => 'Downloading GGUF';
2108
2109 @override
2110 String get gguf_preparing => 'Preparing';
2111
2112 @override
2113 String get gguf_preparing_download => 'Preparing download...';
2114
2115 @override
2116 String get gguf_cancel_import => 'Cancel import';
2117
2118 @override
2119 String get clipboard_empty => 'Clipboard is empty.';
2120
2121 @override
2122 String get could_not_open_huggingface => 'Could not open Hugging Face.';
2123
2124 @override
2125 String get gguf_paste_url_error =>
2126 'Paste a Hugging Face GGUF URL or repo path.';
2127
2128 @override
2129 String get gguf_blob_link => 'Blob link';
2130
2131 @override
2132 String get gguf_repository_label => 'Repository';
2133
2134 @override
2135 String get gguf_detected_path_label => 'Detected path';
2136
2137 @override
2138 String get gguf_imported_section_label => 'Imported GGUF';
2139
2140 @override
2141 String get gguf_already_available => 'Already available on this device';
2142
2143 @override
2144 String get gguf_curated_models_short => 'Curated on-device models';
2145
2146 @override
2147 String get gguf_vision_projector => 'Vision Projector';
2148
2149 @override
2150 String get gguf_attach_projector => 'Attach Vision Projector';
2151
2152 @override
2153 String get gguf_change_projector => 'Change Vision Projector';
2154
2155 @override
2156 String get gguf_remove_projector => 'Remove Projector';
2157
2158 @override
2159 String get gguf_projector_attached =>
2160 'Vision projector attached successfully';
2161
2162 @override
2163 String get gguf_projector_removed => 'Vision projector removed';
2164
2165 @override
2166 String gguf_projector_auto_detected(String name) {
2167 return 'Auto-detected and linked vision projector: $name';
2168 }
2169
2170 @override
2171 String get gguf_is_projector_file =>
2172 'The selected file is a vision projector (mmproj), not a standalone model.';
2173
2174 @override
2175 String get gguf_projector_url_label =>
2176 'Vision Projector URL (optional mmproj)';
2177
2178 @override
2179 String get gguf_projector_url_hint =>
2180 'https://huggingface.co/.../mmproj-...gguf';
2181
2182 @override
2183 String get gguf_vision_not_supported_error =>
2184 'The active model does not support image attachments. Please attach a vision projector (mmproj) or select a vision-supported model.';
2185
2186 @override
2187 String get execute_tool_title => 'Execute Tool';
2188
2189 @override
2190 String get execute_tool_request_desc =>
2191 'The model is requesting to execute the following tool:';
2192
2193 @override
2194 String get reject => 'Reject';
2195
2196 @override
2197 String get approve => 'Approve';
2198
2199 @override
2200 String get server_type_help =>
2201 'Pick the provider before filling connection details.';
2202
2203 @override
2204 String get server_identity_title => 'Identity';
2205
2206 @override
2207 String get server_identity_desc =>
2208 'Name this server and choose how it appears in the list.';
2209
2210 @override
2211 String get server_connection_title => 'Connection';
2212
2213 @override
2214 String get server_connection_desc =>
2215 'Use the address and port exposed by your server.';
2216
2217 @override
2218 String get server_authentication_title => 'Authentication';
2219
2220 @override
2221 String get server_authentication_required_desc =>
2222 'OpenRouter requires an API key before testing.';
2223
2224 @override
2225 String get server_authentication_required_desc_requesty =>
2226 'Requesty requires an API key before testing.';
2227
2228 @override
2229 String get server_authentication_optional_desc =>
2230 'Leave the API key empty if this server does not require one.';
2231
2232 @override
2233 String get mcp_tools_title => 'MCP Tools';
2234
2235 @override
2236 String get available_tools => 'Available tools';
2237
2238 @override
2239 String get unable_load_tools => 'Unable to load tools';
2240
2241 @override
2242 String get no_tools_registered => 'No tools registered';
2243
2244 @override
2245 String get no_tools_registered_desc =>
2246 'Enable the example MCP server or add MCP integrations from chat settings.';
2247
2248 @override
2249 String get example_mcp_server_title => 'Example MCP server';
2250
2251 @override
2252 String get example_mcp_server_desc =>
2253 'Registers example.echo and example.word_count through the same MCP tool provider used by external servers.';
2254
2255 @override
2256 String get disable_example_server => 'Disable example server';
2257
2258 @override
2259 String get enable_example_server => 'Enable example server';
2260
2261 @override
2262 String get built_in_label => 'Built-in';
2263
2264 @override
2265 String get highlights_label => 'Highlights';
2266
2267 @override
2268 String get built_with_label => 'Built with';
2269
2270 @override
2271 String get local_label => 'Local';
2272
2273 @override
2274 String get gguf_format_label => 'GGUF';
2275
2276 @override
2277 String get tool_status_requested => 'Requested';
2278
2279 @override
2280 String get tool_status_approved => 'Approved';
2281
2282 @override
2283 String get tool_status_rejected => 'Rejected';
2284
2285 @override
2286 String get tool_status_running => 'Running';
2287
2288 @override
2289 String get tool_status_done => 'Done';
2290
2291 @override
2292 String get tool_status_failed => 'Failed';
2293
2294 @override
2295 String get model_favorite_toggle => '切换收藏';
2296
2297 @override
2298 String get model_set_default => '设为默认模型';
2299
2300 @override
2301 String get model_clear_default => '取消默认模型';
2302
2303 @override
2304 String get model_default_badge => '默认';
2305
2306 @override
2307 String get model_note_label => '备注';
2308
2309 @override
2310 String get model_note_hint => '为此模型添加个人备注...';
2311
2312 @override
2313 String get unload_models_before_load => '加载前卸载模型';
2314
2315 @override
2316 String get temp_chat_keyboard_incognito => '临时聊天中的隐私键盘';
2317
2318 @override
2319 String get temp_chat_keyboard_incognito_desc => '请求系统键盘在临时聊天期间不保存输入历史记录';
2320
2321 @override
2322 String get resume_last_chat => '恢复上次聊天';
2323
2324 @override
2325 String get resume_last_chat_desc => '启动时自动打开您上次活跃的对话';
2326
2327 @override
2328 String get export_all_data => '导出所有数据';
2329
2330 @override
2331 String get import_all_data => '导入所有数据';
2332
2333 @override
2334 String get export_data_success => '数据导出成功';
2335
2336 @override
2337 String get import_data_success => '数据导入成功';
2338
2339 @override
2340 String import_data_failed(String error) {
2341 return '导入数据失败';
2342 }
2343
2344 @override
2345 String get import_data_confirm => '这将用导入的数据替换您当前的所有数据。是否继续?';
2346
2347 @override
2348 String get import_settings_confirm => '这将用导入的设置替换您当前的设置。是否继续?';
2349
2350 @override
2351 String get export_conversations => '导出对话';
2352
2353 @override
2354 String get import_conversations => '导入对话';
2355
2356 @override
2357 String get export_personas => '导出角色';
2358
2359 @override
2360 String get import_personas => '导入角色';
2361
2362 @override
2363 String get export_settings => '导出设置';
2364
2365 @override
2366 String get import_settings => '导入设置';
2367
2368 @override
2369 String get export_all_zip => '导出全部 (ZIP)';
2370
2371 @override
2372 String get import_all_zip => '导入全部 (ZIP)';
2373
2374 @override
2375 String get duplicate_chat => '复制聊天';
2376
2377 @override
2378 String get duplicate_chat_success => '聊天复制成功';
2379
2380 @override
2381 String get move_to_folder => '移动到文件夹';
2382
2383 @override
2384 String get remove_from_folder => '从文件夹中移除';
2385
2386 @override
2387 String get create_folder => '创建文件夹';
2388
2389 @override
2390 String get new_folder => '新文件夹';
2391
2392 @override
2393 String get folder_name_hint => '输入文件夹名称...';
2394
2395 @override
2396 String get all_chats => '所有聊天';
2397
2398 @override
2399 String get unfiled_chats => '未分类聊天';
2400
2401 @override
2402 String get create => '创建';
2403
2404 @override
2405 String get server_path_prefix_label => '服务器路径前缀';
2406
2407 @override
2408 String get server_path_prefix_hint => '服务器 API 路径的可选前缀 (例如 /v1)';
2409
2410 @override
2411 String get search_message_contents => '搜索消息内容...';
2412
2413 @override
2414 String get message_search_results => '消息搜索结果';
2415
2416 @override
2417 String get saved_messages_title => '已保存的消息';
2418
2419 @override
2420 String get nav_saved_messages => '保存消息';
2421
2422 @override
2423 String get saved_messages_empty => '尚无保存的消息';
2424
2425 @override
2426 String get save_message => '保存消息';
2427
2428 @override
2429 String get message_saved => '消息已保存';
2430
2431 @override
2432 String token_count(int count) {
2433 return 'Token 数: $count';
2434 }
2435
2436 @override
2437 String estimated_token_count(int count) {
2438 return '预估 Token 数: $count';
2439 }
2440
2441 @override
2442 String get test_tts_section_title => '文字转语音测试';
2443
2444 @override
2445 String get test_tts_hint => '输入内容以测试声音...';
2446
2447 @override
2448 String get test_speak_button => '朗读';
2449
2450 @override
2451 String get scroll_to_bottom => '滚动到底部';
2452
2453 @override
2454 String get generate_ai_response => '生成 AI 回复';
2455
2456 @override
2457 String get no_response => '无回复';
2458
2459 @override
2460 String get export => '导出';
2461
2462 @override
2463 String get import => '导入';
2464
2465 @override
2466 String get conversations_label => '对话';
2467
2468 @override
2469 String get personas_label => '角色';
2470
2471 @override
2472 String get settings_label => '设置';
2473
2474 @override
2475 String get export_conversation => '导出对话';
2476
2477 @override
2478 String get tts_process_markdown => '处理 Markdown';
2479
2480 @override
2481 String get tts_process_markdown_desc => '在朗读前去除 **加粗** 等格式标记';
2482
2483 @override
2484 String get tts_skip_seconds => '跳过秒数';
2485
2486 @override
2487 String get tts_skip_seconds_desc => '语音播放器中快进/快退的时间';
2488
2489 @override
2490 String tts_skip_seconds_value(int seconds) {
2491 return '$seconds秒';
2492 }
2493
2494 @override
2495 String get preview_system_prompts => '预览系统提示词';
2496
2497 @override
2498 String get welcome_message_1 => '你好!我是您的本地 AI 助手。';
2499
2500 @override
2501 String get welcome_message_2 => '问我任何问题——我随时恭候。';
2502
2503 @override
2504 String get welcome_message_3 => '您的数据完全在本地处理,绝不会离开您的设备。';
2505
2506 @override
2507 String get welcome_message_4 => '要开始,请从顶部栏中选择一个模型,或在模型管理部分中添加一个新模型。';
2508
2509 @override
2510 String get temporary_chat => '临时聊天';
2511
2512 @override
2513 String get temporary_chat_desc => '此聊天中的消息不会保存到历史记录中';
2514
2515 @override
2516 String get temporary_chat_banner => '临时聊天处于活动状态——消息将不保存到历史记录';
2517
2518 @override
2519 String get temporary_chat_save_warning_title => '保存临时聊天?';
2520
2521 @override
2522 String get temporary_chat_save_warning_body => '此聊天未保存到您的历史记录中。您想现在保存吗?';
2523
2524 @override
2525 String get save_to_history => '保存到历史记录';
2526
2527 @override
2528 String get share_conversation => '分享对话';
2529
2530 @override
2531 String get download_tts_audio => '下载音频';
2532
2533 @override
2534 String get tts_download_unavailable => '音频下载不可用';
2535
2536 @override
2537 String get tts_download_no_audio => '没有生成的可供下载的音频';
2538
2539 @override
2540 String get tts_download_success => '音频保存成功';
2541
2542 @override
2543 String get return_to_chat => '返回聊天';
2544
2545 @override
2546 String get return_to_temp_chat => '返回临时聊天';
2547
2548 @override
2549 String get insert_saved_message => '插入已保存的消息';
2550
2551 @override
2552 String get insert_saved_message_desc => '将您已保存的文本片段添加到聊天中';
2553
2554 @override
2555 String get model_info => '模型信息';
2556
2557 @override
2558 String get model_name => '模型名称';
2559
2560 @override
2561 String get model_identifier => '模型标识符';
2562
2563 @override
2564 String get model_capabilities => '能力';
2565
2566 @override
2567 String get model_api_pricing => 'API 价格(每 100 万 token)';
2568
2569 @override
2570 String get not_available => '不可用';
2571
2572 @override
2573 String get save_message_folders => '保存到文件夹';
2574
2575 @override
2576 String get remove_from_saved => '从已保存中移除';
2577
2578 @override
2579 String get message_already_saved => '消息已保存';
2580
2581 @override
2582 String get stream_ttft => '首个 Token 延迟';
2583
2584 @override
2585 String get stream_tokens_per_sec => '每秒 Token 数';
2586
2587 @override
2588 String get stream_stop_reason => '停止原因';
2589
2590 @override
2591 String get stream_input_tokens => '输入 Token 数';
2592
2593 @override
2594 String get stream_output_tokens => '输出 Token 数';
2595
2596 @override
2597 String get stream_generation_time => '生成时间';
2598
2599 @override
2600 String get attach_image => '附加图片';
2601
2602 @override
2603 String get attach_text_document => '附加文本文件';
2604
2605 @override
2606 String get attach_shortcut_images => '照片';
2607
2608 @override
2609 String get attach_shortcut_documents => '文件';
2610
2611 @override
2612 String get attach_shortcut_saved => '已保存';
2613
2614 @override
2615 String get add_attachment => '添加附件';
2616
2617 @override
2618 String get add_to_chat => '添加到聊天';
2619
2620 @override
2621 String get choose_what_to_attach => '您想添加什么?';
2622
2623 @override
2624 String get choose_attachment_subtitle => '选择要附加到消息的来源';
2625
2626 @override
2627 String get photo_permission_denied => '相册权限被拒绝';
2628
2629 @override
2630 String get select_model_prompt => '选择模型';
2631
2632 @override
2633 String get characters_label => '字符数';
2634
2635 @override
2636 String get exit_temporary_chat_title => '退出临时聊天?';
2637
2638 @override
2639 String get exit_temporary_chat_body => '这将永久删除当前的对话。是否继续?';
2640
2641 @override
2642 String get saved_message_temp_snap_unavailable => '临时聊天中不支持消息快照';
2643
2644 @override
2645 String get filter_title => '筛选聊天';
2646
2647 @override
2648 String get filter_pinned => '已置顶';
2649
2650 @override
2651 String get filter_archived => '已归档';
2652
2653 @override
2654 String get filter_temp_chats => '临时聊天';
2655
2656 @override
2657 String get filter_user_messages => '用户消息';
2658
2659 @override
2660 String get filter_assistant_messages => '助手消息';
2661
2662 @override
2663 String get archive_chat => '归档聊天';
2664
2665 @override
2666 String get unarchive_chat => '取消归档';
2667
2668 @override
2669 String conversation_message_count(int count) {
2670 return '$count 条消息';
2671 }
2672
2673 @override
2674 String conversation_character_count(int count) {
2675 return '$count 个字符';
2676 }
2677
2678 @override
2679 String get generate_title_with_ai => '使用 AI 生成标题';
2680
2681 @override
2682 String get generating_title => '正在生成标题...';
2683
2684 @override
2685 String get generate_title_failed => '无法生成标题';
2686
2687 @override
2688 String get lm_studio_model_browser_title => '模型浏览器';
2689
2690 @override
2691 String get lm_studio_model_search_hint => '搜索模型...';
2692
2693 @override
2694 String get lm_studio_staff_picks => '编辑精选';
2695
2696 @override
2697 String get lm_studio_community_models => '社区模型';
2698
2699 @override
2700 String get lm_studio_no_models => '未找到模型';
2701
2702 @override
2703 String lm_studio_models_count(int count) {
2704 return '$count 个模型';
2705 }
2706
2707 @override
2708 String get lm_studio_browse_models => '在 LM Studio 中浏览模型';
2709
2710 @override
2711 String get lm_studio_model_search => '模型搜索';
2712
2713 @override
2714 String get lm_studio_downloads_title => '下载';
2715
2716 @override
2717 String get lm_studio_choose_quant => '选择量化版本';
2718
2719 @override
2720 String get lm_studio_use_default_quant => '使用默认量化版本';
2721
2722 @override
2723 String get lm_studio_recommended => '推荐';
2724
2725 @override
2726 String get lm_studio_clear_downloads => '清除已完成的下载';
2727
2728 @override
2729 String get lm_studio_no_downloads => '无活动中的下载';
2730
2731 @override
2732 String get lm_studio_downloads_disclaimer => '模型下载直接从 Hugging Face 获取。';
2733
2734 @override
2735 String get lm_studio_staff_pick => '推荐模型';
2736
2737 @override
2738 String get lm_studio_params => '参数';
2739
2740 @override
2741 String get lm_studio_arch => '架构';
2742
2743 @override
2744 String get lm_studio_domain => '领域';
2745
2746 @override
2747 String get lm_studio_format => '格式';
2748
2749 @override
2750 String get lm_studio_vision => '视觉能力';
2751
2752 @override
2753 String get lm_studio_tool_use => '工具调用';
2754
2755 @override
2756 String get lm_studio_reasoning => '推理能力';
2757
2758 @override
2759 String get openrouter_pricing_free => '免费';
2760
2761 @override
2762 String openrouter_pricing_tooltip(String input, String output) {
2763 return '输入 $input / 输出 $output(每 100 万 token)';
2764 }
2765
2766 @override
2767 String get lm_studio_download_options => '下载选项';
2768
2769 @override
2770 String get lm_studio_download => '下载';
2771
2772 @override
2773 String lm_studio_download_size(String size) {
2774 return '下载大小';
2775 }
2776
2777 @override
2778 String lm_studio_downloading_percent(int percent) {
2779 return '正在下载: $percent%';
2780 }
2781
2782 @override
2783 String get lm_studio_readme_unavailable => '此模型无 README 说明文件。';
2784
2785 @override
2786 String get lm_studio_full_gpu_offload => '支持完全 GPU 卸载';
2787
2788 @override
2789 String get lm_studio_partial_gpu_offload => '支持部分 GPU 卸载';
2790
2791 @override
2792 String get lm_studio_likely_too_large => '可能过大';
2793
2794 @override
2795 String get lm_studio_available_ram_gb => '可用 RAM (GB, 可选)';
2796
2797 @override
2798 String get lm_studio_available_vram_gb => '可用 VRAM (GB, 可选)';
2799
2800 @override
2801 String get lm_studio_memory_settings_title => '用于推荐的内存大小';
2802
2803 @override
2804 String get lm_studio_memory_settings_desc => '用于在模型浏览器中预估模型是否可以在您的设备上运行。';
2805
2806 @override
2807 String get think_button_label => '思考';
2808
2809 @override
2810 String get thinking_mode_title => '思考模式';
2811
2812 @override
2813 String get reasoning_effort_low => '低';
2814
2815 @override
2816 String get reasoning_effort_medium => '中';
2817
2818 @override
2819 String get reasoning_effort_high => '高';
2820
2821 @override
2822 String get reasoning_effort_minimal => '极低';
2823
2824 @override
2825 String get reasoning_effort_xhigh => '极高';
2826
2827 @override
2828 String get reasoning_effort_max => '最大';
2829
2830 @override
2831 String get reasoning_effort_off => '关闭';
2832
2833 @override
2834 String get could_not_read_file => '无法读取文件';
2835
2836 @override
2837 String get server_offline => '服务器已离线';
2838
2839 @override
2840 String get could_not_establish_connection =>
2841 '无法与服务器建立连接。请检查您的服务器是否正在运行,以及主机/端口设置是否正确。';
2842
2843 @override
2844 String get retry_connection => '重试连接';
2845
2846 @override
2847 String get tokens_label => 'Token 数';
2848
2849 @override
2850 String get enter_context_length => '输入上下文长度...';
2851
2852 @override
2853 String get openrouter_disclosure =>
2854 '连接此提供商后,您的聊天消息和输入将被发送到他们的服务器。LocalMind 不会跟踪或存储您的对话。';
2855
2856 @override
2857 String get requesty_disclosure =>
2858 '连接此提供商后,您的聊天消息和输入将被发送到他们的服务器。LocalMind 不会跟踪或存储您的对话。';
2859
2860 @override
2861 String get welcome_message_cloud => '您的消息将发送到您连接的提供商。';
2862
2863 @override
2864 String get privacy_policy => '隐私政策';
2865
2866 @override
2867 String get cloud_sync => 'S3 云同步';
2868
2869 @override
2870 String get cloud_sync_description => '与您自己的 S3 兼容服务器进行端到端加密同步';
2871
2872 @override
2873 String get cloud_sync_endpoint => '端点 URL';
2874
2875 @override
2876 String get cloud_sync_bucket => '存储桶';
2877
2878 @override
2879 String get cloud_sync_region => '区域';
2880
2881 @override
2882 String get cloud_sync_prefix => '前缀';
2883
2884 @override
2885 String get cloud_sync_access_key => '访问密钥 ID';
2886
2887 @override
2888 String get cloud_sync_secret_key => '秘密访问密钥';
2889
2890 @override
2891 String get cloud_sync_session_token => '会话令牌(可选)';
2892
2893 @override
2894 String get cloud_sync_passphrase => '加密密码短语';
2895
2896 @override
2897 String get cloud_sync_confirm_passphrase => '确认密码短语';
2898
2899 @override
2900 String get cloud_sync_path_style => '使用路径样式寻址';
2901
2902 @override
2903 String get cloud_sync_allow_http => '允许不安全的 HTTP';
2904
2905 @override
2906 String get cloud_sync_http_warning => 'HTTP 会向网络暴露请求信息和凭据。仅在可信的本地 S3 服务器上使用。';
2907
2908 @override
2909 String get cloud_sync_test => '测试连接';
2910
2911 @override
2912 String get cloud_sync_enable => '启用加密同步';
2913
2914 @override
2915 String get cloud_sync_now => '立即同步';
2916
2917 @override
2918 String get cloud_sync_disconnect => '断开此设备';
2919
2920 @override
2921 String get cloud_sync_last_synced => '上次同步';
2922
2923 @override
2924 String get cloud_sync_never => '从未';
2925
2926 @override
2927 String get cloud_sync_conflicts => '已保留冲突';
2928
2929 @override
2930 String get cloud_sync_passphrase_mismatch => '密码短语不匹配';
2931
2932 @override
2933 String get crash_report_title => '出了点问题';
2934
2935 @override
2936 String get crash_report_stack_trace => '堆栈跟踪';
2937
2938 @override
2939 String get crash_report_tap_to_expand => '点击展开';
2940
2941 @override
2942 String get crash_report_button => '报告此崩溃';
2943
2944 @override
2945 String get crash_try_again => '重试';
2946
2947 @override
2948 String get crash_report_empty_stack => '<空>';
2949
2950 @override
2951 String get crash_report_disclaimer =>
2952 '报告将打开已预填诊断信息的 GitHub。由您掌控 — 不会自动提交任何内容。请在提交前检查并删除敏感内容。';
2953
2954 @override
2955 String get crash_report_copied => '已复制到剪贴板';
2956
2957 @override
2958 String get report_a_problem => '报告问题';
2959
2960 @override
2961 String get rename_folder => '重命名文件夹';
2962
2963 @override
2964 String get delete_folder => '删除文件夹';
2965
2966 @override
2967 String get delete_folder_title => '删除文件夹?';
2968
2969 @override
2970 String delete_folder_body(String name) {
2971 return '确定要删除\"$name\"吗?其中的对话或已保存的消息将移回\"未分类\"。此操作无法撤销。';
2972 }
2973
2974 @override
2975 String get folder_name_required => '请输入文件夹名称';
2976
2977 @override
2978 String get model_required_toast => '您需要先选择一个模型';
2979
2980 @override
2981 String get settings_concise_voice_responses => '简短语音模式回复';
2982
2983 @override
2984 String get settings_concise_voice_responses_desc =>
2985 '在语音模式下保持 LLM 回复简短(1个短段落)并提出后续问题。';
2986
2987 @override
2988 String get s3_connection_succeeded => 'S3 连接成功。';
2989
2990 @override
2991 String failed_to_open_url(String error) {
2992 return '无法打开 URL: $error';
2993 }
2994
2995 @override
2996 String failed_to_copy(String error) {
2997 return '复制失败: $error';
2998 }
2999
3000 @override
3001 String get file_explorer_not_found =>
3002 'No file explorer found. Please make sure a file manager app is installed and enabled on your device.';
3003
3004 @override
3005 String export_data_failed(String error) {
3006 return 'Failed to export backup: $error';
3007 }
3008
3009 @override
3010 String file_pick_failed(String error) {
3011 return 'Failed to select file: $error';
3012 }
3013
3014 @override
3015 String image_pick_failed(String error) {
3016 return 'Failed to select image: $error';
3017 }
3018
3019 @override
3020 String get calendar_access => 'Calendar Access';
3021
3022 @override
3023 String get calendar_access_desc =>
3024 'Allow AI to read and create calendar events';
3025
3026 @override
3027 String get calendar_permission_denied =>
3028 'Calendar permission denied. Please grant calendar access in your device settings.';
3029
3030 @override
3031 String get location_access => 'Location Access';
3032
3033 @override
3034 String get location_access_desc =>
3035 'Allow AI to get your current location with place name';
3036
3037 @override
3038 String get location_permission_denied =>
3039 'Location permission denied. Please grant location access in your device settings.';
3040
3041 @override
3042 String get builtin_ai_not_supported =>
3043 'Built-in AI is not supported on this device.';
3044
3045 @override
3046 String get builtin_ai_unsupported_desc =>
3047 'Your device hardware or OS does not support on-device system AI (e.g. Gemini Nano / Apple Intelligence). Please choose a downloadable model instead.';
3048
3049 @override
3050 String get builtin_ai_unsupported_chip => 'Not Supported';
3051
3052 @override
3053 String get builtin_ai_enable => 'Enable';
3054
3055 @override
3056 String get model_reasoning_default => '模型默认';
3057
3058 @override
3059 String get model_reasoning_on => '开启';
3060
3061 @override
3062 String get model_reasoning_help => '应用于下一条回复。如果模型的聊天模板支持,关闭后将禁用思考。';
3063
3064 @override
3065 String get model_reasoning_save_error => '无法保存思考模式。请重试。';
3066
3067 @override
3068 String get on_device_engine_failed_error =>
3069 '设备端模型已停止响应,通常是因为对话超出了上下文窗口。正在重新加载模型。请重试、开始新对话,或在设置中增加上下文长度。';
3070
3071 @override
3072 String get stt_error_no_match => '未识别到语音。点按重试。';
3073
3074 @override
3075 String get stt_error_speech_timeout => '未检测到语音。点按重试。';
3076
3077 @override
3078 String get stt_error_permission => '麦克风权限被拒绝。';
3079
3080 @override
3081 String get stt_error_busy => '语音识别正忙,请重试。';
3082
3083 @override
3084 String get stt_error_network => '网络错误。请检查网络连接后重试。';
3085
3086 @override
3087 String get stt_error_audio => '录音出错,请检查麦克风。';
3088
3089 @override
3090 String get stt_error_client => '语音识别服务无法启动。请确认已安装语音输入应用并将其设为默认语音识别器,然后重试。';
3091
3092 @override
3093 String get stt_error_language => '此设备上的语音识别器不支持你的语言。';
3094
3095 @override
3096 String get stt_error_unavailable =>
3097 '此设备上未找到语音识别服务。请安装语音输入应用(例如 FUTO Voice Input)并将其设为默认语音识别器。';
3098
3099 @override
3100 String stt_error_generic(String code) {
3101 return '语音识别错误:$code';
3102 }
3103
3104 @override
3105 String get send_temperature_to_api => '发送 Temperature';
3106
3107 @override
3108 String get send_top_p_to_api => '发送 Top P';
3109
3110 @override
3111 String get send_sampling_params_desc =>
3112 '对于拒绝此参数的服务商或模型(例如部分推理模型)请关闭。适用于所有远程服务器的对话。';
3113
3114 @override
3115 String get default_system_prompt => '默认系统提示词';
3116
3117 @override
3118 String get default_system_prompt_desc => '用于没有角色且没有专属系统提示词的对话。';
3119
3120 @override
3121 String get default_system_prompt_hint => '你是一个乐于助人的助手……';
3122
3123 @override
3124 String background_generation_notice(String title) {
3125 return '“$title”仍在生成回复。完成后即可在此发送。点按打开。';
3126 }
3127
3128 @override
3129 String get background_generation_notice_untitled =>
3130 '另一个对话仍在生成回复。完成后即可在此发送。点按打开。';
3131
3132 @override
3133 String background_generation_notice_info(String title) {
3134 return '正在后台回复“$title”。点按打开。';
3135 }
3136
3137 @override
3138 String get background_generation_notice_info_untitled => '另一个对话正在后台回复。点按打开。';
3139
3140 @override
3141 String background_generation_notice_multiple(int count) {
3142 return '$count 个对话正在后台回复。';
3143 }
3144
3145 @override
3146 String get background_generation_chat_untitled => '未命名对话';
3147 }
3148
3149 /// The translations for Chinese, as used in Taiwan (`zh_TW`).
3150 class AppLocalizationsZhTw extends AppLocalizationsZh {
3151 AppLocalizationsZhTw() : super('zh_TW');
3152
3153 @override
3154 String get app_name => 'LocalMind';
3155
3156 @override
3157 String get app_tagline => '您的 AI。您的裝置。您的規則。';
3158
3159 @override
3160 String get app_version => '1.0.0';
3161
3162 @override
3163 String get cancel => '取消';
3164
3165 @override
3166 String get confirm => '確認';
3167
3168 @override
3169 String get delete => '刪除';
3170
3171 @override
3172 String get save => '儲存';
3173
3174 @override
3175 String get retry => '重試';
3176
3177 @override
3178 String get close => '關閉';
3179
3180 @override
3181 String get done => '完成';
3182
3183 @override
3184 String get continue_action => '繼續';
3185
3186 @override
3187 String get skip => '跳過';
3188
3189 @override
3190 String get install => '安裝';
3191
3192 @override
3193 String get download => '下載';
3194
3195 @override
3196 String get resume => '繼續';
3197
3198 @override
3199 String get pause => '暫停';
3200
3201 @override
3202 String get stop => '停止';
3203
3204 @override
3205 String get edit => '編輯';
3206
3207 @override
3208 String get preview => '預覽';
3209
3210 @override
3211 String get unload => '卸載';
3212
3213 @override
3214 String get load => '載入';
3215
3216 @override
3217 String get rename => '重新命名';
3218
3219 @override
3220 String get pin => '釘選';
3221
3222 @override
3223 String get unpin => '取消釘選';
3224
3225 @override
3226 String get share => '分享';
3227
3228 @override
3229 String get copy => '複製';
3230
3231 @override
3232 String get copied => '已複製!';
3233
3234 @override
3235 String get copied_to_clipboard => '已複製到剪貼簿';
3236
3237 @override
3238 String get select => '選擇';
3239
3240 @override
3241 String get active => '已啟用';
3242
3243 @override
3244 String get all => '全部';
3245
3246 @override
3247 String get none => '無';
3248
3249 @override
3250 String get none_selected => '未選擇';
3251
3252 @override
3253 String get online => '線上';
3254
3255 @override
3256 String get connected => '已連線';
3257
3258 @override
3259 String get checking => '正在檢查';
3260
3261 @override
3262 String get offline => '離線';
3263
3264 @override
3265 String get error => '錯誤';
3266
3267 @override
3268 String get unknown_error => '未知錯誤';
3269
3270 @override
3271 String get not_now => '暫不';
3272
3273 @override
3274 String get enable => '啟用';
3275
3276 @override
3277 String get proceed_anyway => '仍然繼續';
3278
3279 @override
3280 String get test_connection => '測試連線';
3281
3282 @override
3283 String get testing => '正在測試...';
3284
3285 @override
3286 String get connection_successful => '連線成功!';
3287
3288 @override
3289 String get connection_failed => '連線失敗。請檢查您的設定。';
3290
3291 @override
3292 String get save_continue => '儲存並繼續';
3293
3294 @override
3295 String get save_changes => '儲存變更';
3296
3297 @override
3298 String get finish_setup => '完成設定';
3299
3300 @override
3301 String get start_new_chat => '開始新對話';
3302
3303 @override
3304 String get cannot_undo => '此操作無法復原。';
3305
3306 @override
3307 String get ram_warning => '記憶體警告';
3308
3309 @override
3310 String get recommended => '推薦';
3311
3312 @override
3313 String get may_be_large => '可能對此裝置來說過大';
3314
3315 @override
3316 String get calculating => '正在計算...';
3317
3318 @override
3319 String get download_failed => '下載失敗';
3320
3321 @override
3322 String get downloaded => '已下載';
3323
3324 @override
3325 String get not_downloaded => '未下載';
3326
3327 @override
3328 String get installed => '已安裝';
3329
3330 @override
3331 String get not_installed => '未安裝';
3332
3333 @override
3334 String get loading => '正在載入...';
3335
3336 @override
3337 String get thinking => '正在思考';
3338
3339 @override
3340 String get processing => '正在處理...';
3341
3342 @override
3343 String get initializing => '正在初始化...';
3344
3345 @override
3346 String get ready => '就緒';
3347
3348 @override
3349 String get preparing_app => '正在準備應用程式...';
3350
3351 @override
3352 String get initializing_services => '正在初始化服務...';
3353
3354 @override
3355 String get configuring_server => '正在設定伺服器...';
3356
3357 @override
3358 String get startup_failed => '啟動失敗';
3359
3360 @override
3361 String get something_went_wrong => '出了點問題';
3362
3363 @override
3364 String get delete_model_title => '刪除模型';
3365
3366 @override
3367 String delete_model_body(String name) {
3368 return '您確定要刪除 $name 嗎?';
3369 }
3370
3371 @override
3372 String delete_model_body_with_size(String name, String size) {
3373 return '您確定要刪除 $name 嗎?這將釋放約 $size 的空間。\n\n如有需要,您稍後可以重新下載此模型。';
3374 }
3375
3376 @override
3377 String get delete_voice_title => '刪除語音';
3378
3379 @override
3380 String delete_voice_body(String name, String size) {
3381 return '您確定要刪除 $name 嗎?這將釋放約 $size 的空間。\n\n如有需要,您稍後可以重新下載此語音。';
3382 }
3383
3384 @override
3385 String get delete_server_title => '刪除伺服器';
3386
3387 @override
3388 String delete_server_body(String name) {
3389 return '您確定要刪除 \"$name\" 嗎?此操作無法復原。';
3390 }
3391
3392 @override
3393 String get delete_conversation_title => '要刪除對話嗎?';
3394
3395 @override
3396 String delete_conversation_body(String title) {
3397 return '您確定要刪除 \"$title\" 嗎?此操作無法復原。';
3398 }
3399
3400 @override
3401 String get delete_message_title => '要刪除訊息嗎?';
3402
3403 @override
3404 String delete_persona_title(String name) {
3405 return '要刪除 \"$name\" 嗎?';
3406 }
3407
3408 @override
3409 String get delete_persona_body => '此操作無法復原。';
3410
3411 @override
3412 String get delete_builtin_persona_body => '這是一個內置角色。您稍後可以在「設定」中將其恢復。';
3413
3414 @override
3415 String get restore_builtin_personas => '恢復預設角色';
3416
3417 @override
3418 String get restore_builtin_personas_desc => '重新添加您已刪除的任何內置角色';
3419
3420 @override
3421 String get restore_builtin_personas_success => '已恢復預設角色';
3422
3423 @override
3424 String get clear_personas => '清除角色';
3425
3426 @override
3427 String get enable_image_compression => '發送前壓縮圖片';
3428
3429 @override
3430 String get enable_image_compression_desc => '調整並壓縮附加圖片的大小,以使上傳大小保持在伺服器限制內';
3431
3432 @override
3433 String get image_compression_level => '壓縮強度';
3434
3435 @override
3436 String get image_compression_level_desc => '較高的壓縮強度會生成質量較低但上傳更小的圖片';
3437
3438 @override
3439 String get image_compression_level_low => '低';
3440
3441 @override
3442 String get image_compression_level_medium => '中';
3443
3444 @override
3445 String get image_compression_level_high => '高';
3446
3447 @override
3448 String get sort_models_tooltip => '排序模型';
3449
3450 @override
3451 String get sort_by_favorites => '收藏優先';
3452
3453 @override
3454 String get sort_by_name => '名稱 (A-Z)';
3455
3456 @override
3457 String get sort_by_size_smallest => '大小 (從小到大)';
3458
3459 @override
3460 String get sort_by_size_largest => '大小 (從大到小)';
3461
3462 @override
3463 String get sort_by_context_length => '上下文長度';
3464
3465 @override
3466 String bulk_ai_rename_progress(int done, int total) {
3467 return '正在重命名 $done/$total...';
3468 }
3469
3470 @override
3471 String selected_count(int count) {
3472 return '已選擇 $count 個';
3473 }
3474
3475 @override
3476 String get ai_rename_tooltip => '使用 AI 重命名所選內容';
3477
3478 @override
3479 String get new_chat_in_folder_tooltip => '在此資料夾中新建聊天';
3480
3481 @override
3482 String total_tokens_count(int count) {
3483 return '$count 個 Token';
3484 }
3485
3486 @override
3487 String get smart_replies_use_persona => '在智能回覆中應用角色';
3488
3489 @override
3490 String get smart_replies_use_persona_desc => '建議的回覆將符合當前啟用角色的語氣,而不是通用的助手語氣';
3491
3492 @override
3493 String get keep_persona_on_new_chat => '新聊天保留角色';
3494
3495 @override
3496 String get keep_persona_on_new_chat_desc => '開始新聊天時不要清除選定的角色';
3497
3498 @override
3499 String get role_swap_button_enabled => '顯示角色切換按鈕';
3500
3501 @override
3502 String get role_swap_button_enabled_desc =>
3503 '在聊天輸入框中顯示一個按鈕,允許您以助手而非用戶的身份發送消息,而不生成任何回覆';
3504
3505 @override
3506 String get send_as_user_tooltip => '以用戶身份發送';
3507
3508 @override
3509 String get send_as_assistant_tooltip => '以助手身份發送 (無回覆)';
3510
3511 @override
3512 String get insert_without_generating_tooltip => '僅插入不生成回覆';
3513
3514 @override
3515 String get token_usage_title => 'Token 使用情況';
3516
3517 @override
3518 String get total_tokens_label => '已用 Token';
3519
3520 @override
3521 String get usage_percent_label => '已用上下文';
3522
3523 @override
3524 String get export_choice_title => '匯出';
3525
3526 @override
3527 String get export_choice_body => '您希望如何匯出此內容?';
3528
3529 @override
3530 String get copy_to_clipboard => '複製到剪貼簿';
3531
3532 @override
3533 String bulk_export_conversations_success(int count) {
3534 return '已成功匯出 $count 個對話';
3535 }
3536
3537 @override
3538 String get bulk_ai_rename_confirm_title => '使用 AI 重命名?';
3539
3540 @override
3541 String bulk_ai_rename_confirm_body(int count) {
3542 return '這將請求 AI 為每個選定的 $count 個對話生成新標題,替換其當前的標題。此操作可能需要一些時間,且無法撤銷。';
3543 }
3544
3545 @override
3546 String get sort_by_modified_date => '最近修改';
3547
3548 @override
3549 String get sort_by_created_date => '創建日期';
3550
3551 @override
3552 String get sort_title => '排序';
3553
3554 @override
3555 String get clear_conversation_title => '要清除對話嗎?';
3556
3557 @override
3558 String get clear_conversation_body => '這會刪除此對話中的所有訊息。';
3559
3560 @override
3561 String get clear => '清除';
3562
3563 @override
3564 String label_completed(String label) {
3565 return '$label 已完成';
3566 }
3567
3568 @override
3569 String error_with_message(String error) {
3570 return '錯誤: $error';
3571 }
3572
3573 @override
3574 String preview_failed(String error) {
3575 return '預覽失敗: $error';
3576 }
3577
3578 @override
3579 String loading_model(String modelId) {
3580 return '正在載入 $modelId...';
3581 }
3582
3583 @override
3584 String model_loaded(String modelId, String backend) {
3585 return '模型已載入: $modelId ($backend)';
3586 }
3587
3588 @override
3589 String get no_model_loaded => '未載入任何模型。點擊「管理裝置端模型」以下載並載入模型。';
3590
3591 @override
3592 String loading_model_error(String error) {
3593 return '錯誤: $error';
3594 }
3595
3596 @override
3597 String get delete_conversation => '要刪除對話嗎?';
3598
3599 @override
3600 String get nav_history => '歷史';
3601
3602 @override
3603 String get nav_servers => '伺服器';
3604
3605 @override
3606 String get nav_local_models => '本機模型';
3607
3608 @override
3609 String get nav_tts => '語音合成';
3610
3611 @override
3612 String get nav_personas => '角色';
3613
3614 @override
3615 String get nav_settings => '設定';
3616
3617 @override
3618 String get nav_new_chat => '新對話';
3619
3620 @override
3621 String get search_hint => '搜尋對話...';
3622
3623 @override
3624 String get no_server_selected => '未選擇伺服器';
3625
3626 @override
3627 String get switch_server => '切換伺服器';
3628
3629 @override
3630 String get switch_server_subtitle => '選擇要連線的伺服器';
3631
3632 @override
3633 String get manage_servers => '管理伺服器';
3634
3635 @override
3636 String get open_source => '開源';
3637
3638 @override
3639 String get open_source_desc => 'LocalMind 是開源專案。可在 GitHub 上關注我們的進展或參與貢獻。';
3640
3641 @override
3642 String get star_on_github => '在 GitHub 上點亮 Star';
3643
3644 @override
3645 String get add_more => '新增更多';
3646
3647 @override
3648 String get on_github => '在 GitHub 上';
3649
3650 @override
3651 String get could_not_open_github => '無法開啟 GitHub。';
3652
3653 @override
3654 String get settings_title => '設定';
3655
3656 @override
3657 String get settings_appearance => '外觀';
3658
3659 @override
3660 String get settings_language => '語言';
3661
3662 @override
3663 String get language_system_default => '系統預設';
3664
3665 @override
3666 String get settings_tts => '語音合成 (TTS)';
3667
3668 @override
3669 String get settings_android_assistant => 'Android 助理';
3670
3671 @override
3672 String get assistant_default_title => '預設語音助理';
3673
3674 @override
3675 String get assistant_default_description =>
3676 '將 Localmind 設定為 Android 系統預設的語音助理。';
3677
3678 @override
3679 String get assistant_status_active => 'Localmind 已設定為預設助理';
3680
3681 @override
3682 String get assistant_status_available => '可將 Localmind 設定為預設助理';
3683
3684 @override
3685 String get assistant_status_manual => '開啟系統設定並手動選擇 Localmind';
3686
3687 @override
3688 String get assistant_status_unsupported => '預設助理設定僅適用於 Android 7.0+';
3689
3690 @override
3691 String get assistant_status_checking => '正在檢查助理狀態…';
3692
3693 @override
3694 String get assistant_set_default => '設定預設助理';
3695
3696 @override
3697 String get assistant_open_settings => '開啟助理設定';
3698
3699 @override
3700 String assistant_error(Object error) {
3701 return '錯誤: $error';
3702 }
3703
3704 @override
3705 String get settings_behavior => '行為';
3706
3707 @override
3708 String get settings_on_device => '裝置端推論';
3709
3710 @override
3711 String get settings_default_server => '預設伺服器';
3712
3713 @override
3714 String get settings_default_persona => '預設角色';
3715
3716 @override
3717 String get settings_default_model => '預設模型';
3718
3719 @override
3720 String get settings_default_model_desc => '開始新聊天時自動選擇。';
3721
3722 @override
3723 String get settings_privacy => '隱私';
3724
3725 @override
3726 String get settings_data_management => '資料管理';
3727
3728 @override
3729 String get settings_about => '關於';
3730
3731 @override
3732 String get theme => '主題';
3733
3734 @override
3735 String get theme_system => '系統';
3736
3737 @override
3738 String get theme_light => '淺色';
3739
3740 @override
3741 String get theme_dark => '深色';
3742
3743 @override
3744 String get theme_claude => 'Claude';
3745
3746 @override
3747 String get font_size => '字型大小';
3748
3749 @override
3750 String get font_size_desc => '調整對話中的文字大小。';
3751
3752 @override
3753 String get font_preview => '敏捷的棕色狐狸跳過那隻懶狗。';
3754
3755 @override
3756 String get code_theme_dark => '程式碼主題 (深色)';
3757
3758 @override
3759 String get code_theme_light => '程式碼主題 (淺色)';
3760
3761 @override
3762 String get code_theme_desc => '選擇程式碼區塊的語法醒目提示主題。';
3763
3764 @override
3765 String get tts_engine => 'TTS 引擎';
3766
3767 @override
3768 String get tts_engine_system => '系統 TTS';
3769
3770 @override
3771 String get tts_engine_kitten => 'Kitten TTS';
3772
3773 @override
3774 String get voice => '語音';
3775
3776 @override
3777 String get voice_female => '女聲';
3778
3779 @override
3780 String get voice_male => '男聲';
3781
3782 @override
3783 String get voice_other => '其他';
3784
3785 @override
3786 String get tts_speed => 'TTS 速度';
3787
3788 @override
3789 String get tts_speed_desc => '調整播放速率。';
3790
3791 @override
3792 String get manage_tts_models => '管理 TTS 模型';
3793
3794 @override
3795 String get manage_on_device_models => '管理裝置端模型';
3796
3797 @override
3798 String get enable_smart_reply => '裝置端智慧回覆';
3799
3800 @override
3801 String get ai_user_response_enabled => 'AI 用戶消息 (長按發送)';
3802
3803 @override
3804 String get ai_user_response_enabled_desc => '長按發送按鈕 3 秒鐘以讓 AI 撰寫並發送您的下一條消息';
3805
3806 @override
3807 String get ai_user_response_tooltip => '使用 AI 生成用戶消息';
3808
3809 @override
3810 String get streaming_responses => '串流響應';
3811
3812 @override
3813 String get auto_generate_titles => '自動生成標題';
3814
3815 @override
3816 String get send_on_enter => '按 Enter 鍵發送';
3817
3818 @override
3819 String get show_system_messages => '顯示系統訊息';
3820
3821 @override
3822 String get show_system_messages_desc => '當沒有選定角色時,每次請求都發送預設的助手系統提示詞';
3823
3824 @override
3825 String get show_system_messages_in_chat => '在聊天中顯示系統消息';
3826
3827 @override
3828 String get show_system_messages_in_chat_desc =>
3829 '將系統消息 (例如來自導入的備份) 作為對話中的可見氣泡顯示';
3830
3831 @override
3832 String get auto_collapse_thinking => '自動摺疊思考過程';
3833
3834 @override
3835 String get auto_collapse_thinking_desc => '存在主要回覆時,在生成完成後自動摺疊推理過程';
3836
3837 @override
3838 String get haptic_feedback => '觸覺回饋';
3839
3840 @override
3841 String get enable_mcp => '啟用 MCP';
3842
3843 @override
3844 String get new_chat_mcp_default => '新對話預設啟用 MCP';
3845
3846 @override
3847 String get show_data_indicator => '顯示數據指示器';
3848
3849 @override
3850 String get privacy_info => '「LocalMind 絕不查看您的數據」';
3851
3852 @override
3853 String get delete_all_conversations => '刪除所有對話';
3854
3855 @override
3856 String get reset_settings_defaults => '重設設定至預設值';
3857
3858 @override
3859 String get chat_title => 'LocalMind';
3860
3861 @override
3862 String get chat_parameters_tooltip => '對話參數';
3863
3864 @override
3865 String get change_persona => '更換角色';
3866
3867 @override
3868 String get set_persona => '設定角色';
3869
3870 @override
3871 String get remove_persona => '刪除角色';
3872
3873 @override
3874 String get clear_conversation => '清除對話';
3875
3876 @override
3877 String get connection_error => '連線錯誤。請檢查您的伺服器。';
3878
3879 @override
3880 String get disconnected => '與伺服器斷開連線。';
3881
3882 @override
3883 String get configure => '設定';
3884
3885 @override
3886 String get select_model => '選擇模型';
3887
3888 @override
3889 String get select_persona => '選擇角色';
3890
3891 @override
3892 String get manage_personas => '管理角色';
3893
3894 @override
3895 String get personas_combine_hint => '選定的角色將被合併';
3896
3897 @override
3898 String get start_conversation => '開始對話';
3899
3900 @override
3901 String get recent_chats => '最近對話';
3902
3903 @override
3904 String get see_all => '查看全部';
3905
3906 @override
3907 String get quick_write => '幫我寫一個函式';
3908
3909 @override
3910 String get quick_explain => '解釋這段程式碼';
3911
3912 @override
3913 String get quick_debug => '幫我偵錯這個';
3914
3915 @override
3916 String get quick_async => '我該如何使用 async/await?';
3917
3918 @override
3919 String get history_missing_title => '歷史紀錄遺失';
3920
3921 @override
3922 String get history_missing_desc => '此對話中的訊息已被刪除,或歷史紀錄已損壞。';
3923
3924 @override
3925 String get technical_details => '技術細節';
3926
3927 @override
3928 String get last_error => '上次錯誤:';
3929
3930 @override
3931 String get copy_info => '複製資訊';
3932
3933 @override
3934 String get conversation_id => '對話 ID';
3935
3936 @override
3937 String get created_at => '建立於';
3938
3939 @override
3940 String get expected_messages => '預期訊息';
3941
3942 @override
3943 String get debug_dialog_desc => '用以協助識別同步問題的診斷資訊。';
3944
3945 @override
3946 String get chat_input_hint => '詢問任何問題';
3947
3948 @override
3949 String get send_message_tooltip => '發送訊息';
3950
3951 @override
3952 String get stop_generation_tooltip => '停止生成';
3953
3954 @override
3955 String get attach_images_tooltip => '附加圖片';
3956
3957 @override
3958 String get start_listening_tooltip => '開始聆聽';
3959
3960 @override
3961 String get stop_listening_tooltip => '停止聆聽';
3962
3963 @override
3964 String tool_label(String toolCallId) {
3965 return '工具: $toolCallId';
3966 }
3967
3968 @override
3969 String get tool_unknown => '工具: 未知';
3970
3971 @override
3972 String get message_options => '訊息選項';
3973
3974 @override
3975 String get copy_markdown => '複製為 Markdown';
3976
3977 @override
3978 String get copied_markdown => '已複製為 Markdown';
3979
3980 @override
3981 String get read_aloud => '朗讀';
3982
3983 @override
3984 String get stop_reading => '停止朗讀';
3985
3986 @override
3987 String get more => '更多';
3988
3989 @override
3990 String character_count(int length) {
3991 return '$length 個字元';
3992 }
3993
3994 @override
3995 String get edit_message => '編輯訊息';
3996
3997 @override
3998 String get edit_message_desc => '儲存將移除下方助理的回覆並重新生成。';
3999
4000 @override
4001 String get save_regenerate => '儲存並重新生成';
4002
4003 @override
4004 String get chat_settings_title => '對話設定';
4005
4006 @override
4007 String get reset_defaults => '重設預設值';
4008
4009 @override
4010 String get parameters_tab => '參數';
4011
4012 @override
4013 String get mcp_tab => 'MCP';
4014
4015 @override
4016 String get temperature => '溫度';
4017
4018 @override
4019 String get temperature_desc => '控制隨機性:較高 = 創意,較低 = 專注';
4020
4021 @override
4022 String get top_p => 'Top P';
4023
4024 @override
4025 String get top_p_desc => '核取樣門檻';
4026
4027 @override
4028 String get max_tokens => '最大 Token 數';
4029
4030 @override
4031 String get max_tokens_desc => '回應限制';
4032
4033 @override
4034 String get context_length => '上下文長度';
4035
4036 @override
4037 String get context_length_desc => '歷史視窗';
4038
4039 @override
4040 String get mcp_disabled_warning => 'MCP 已在全域被停用。請在設定中啟用以使用這些功能。';
4041
4042 @override
4043 String get mcp_enable_chat => '為此對話啟用 MCP';
4044
4045 @override
4046 String get auto_execute_tools => '自動執行工具';
4047
4048 @override
4049 String get beta_label => 'Beta';
4050
4051 @override
4052 String get experimental_label => '實驗性';
4053
4054 @override
4055 String get add_ephemeral_mcp => '新增臨時 MCP 伺服器';
4056
4057 @override
4058 String get mcp_label_placeholder => '標籤';
4059
4060 @override
4061 String get mcp_url_placeholder => 'URL (https://...)';
4062
4063 @override
4064 String get active_integrations => '活動整合';
4065
4066 @override
4067 String get import_mcp_json => '匯入 JSON';
4068
4069 @override
4070 String get import_mcp_json_dialog_title => '匯入 MCP 設定 JSON';
4071
4072 @override
4073 String get import_mcp_json_instructions =>
4074 '直接從 LM Studio (mcp.json) 複製 mcpServers JSON 或在下方貼上擴充功能陣列:';
4075
4076 @override
4077 String get import_mcp_json_placeholder => '在此貼上 mcpServers JSON 或擴充功能清單...';
4078
4079 @override
4080 String mcp_import_success(int count) {
4081 return '已成功匯入 $count 個整合';
4082 }
4083
4084 @override
4085 String get mcp_import_failed => 'JSON 中未找到有效的 MCP 整合';
4086
4087 @override
4088 String get enable_notifications => '啟用通知';
4089
4090 @override
4091 String get enable_notifications_desc => '在模型下載完成時獲得通知。';
4092
4093 @override
4094 String get chat_history_title => '對話歷史';
4095
4096 @override
4097 String get conversation_just_now => '剛剛';
4098
4099 @override
4100 String conversation_minutes_ago(int minutes) {
4101 return '$minutes分鐘前';
4102 }
4103
4104 @override
4105 String conversation_hours_ago(int hours) {
4106 return '$hours小時前';
4107 }
4108
4109 @override
4110 String get conversation_yesterday => '昨天';
4111
4112 @override
4113 String conversation_days_ago(int days) {
4114 return '$days天前';
4115 }
4116
4117 @override
4118 String conversation_date(int month, int day, int year) {
4119 return '$month/$day/$year';
4120 }
4121
4122 @override
4123 String get options_tooltip => '選項';
4124
4125 @override
4126 String get no_results_found => '未找到結果';
4127
4128 @override
4129 String get no_conversations_yet => '尚無對話';
4130
4131 @override
4132 String get try_different_search => '嘗試不同的搜尋詞';
4133
4134 @override
4135 String get start_new_conversation => '開始新對話';
4136
4137 @override
4138 String get rename_conversation => '重新命名對話';
4139
4140 @override
4141 String get enter_new_title => '輸入新標題';
4142
4143 @override
4144 String get pinned_section => '已釘選';
4145
4146 @override
4147 String get today_section => '今天';
4148
4149 @override
4150 String get yesterday_section => '昨天';
4151
4152 @override
4153 String get previous_7_days => '前 7 天';
4154
4155 @override
4156 String get previous_30_days => '前 30 天';
4157
4158 @override
4159 String get older_section => '更早';
4160
4161 @override
4162 String get onboarding_choose_language => '選擇語言';
4163
4164 @override
4165 String get onboarding_choose_language_desc => '選擇您偏好的語言。您隨時可以在設定中變更此項。';
4166
4167 @override
4168 String get onboarding_localmind => 'LOCALMIND';
4169
4170 @override
4171 String get onboarding_connect_server => '連線您的\n伺服器';
4172
4173 @override
4174 String get onboarding_connect_desc =>
4175 '連線到 LM Studio、Ollama 或\nOpenRouter,開啟您的私有 AI\n體驗。';
4176
4177 @override
4178 String get openai_compatible_api => 'OpenAI 相容 API';
4179
4180 @override
4181 String get https_requires_ssl => 'HTTPS 需要 SSL';
4182
4183 @override
4184 String get most_local_setups_use_http => '大多數本機配置使用 http://';
4185
4186 @override
4187 String get onboarding_welcome => '歡迎使用 LocalMind';
4188
4189 @override
4190 String get server_type_on_device => '裝置端';
4191
4192 @override
4193 String get server_type_lm_studio => 'LM Studio';
4194
4195 @override
4196 String get server_type_ollama => 'Ollama';
4197
4198 @override
4199 String get server_type_ollama_cloud => 'Ollama Cloud';
4200
4201 @override
4202 String get server_type_ollama_cloud_sub => '託管雲端服務';
4203
4204 @override
4205 String get server_type_ollama_cloud_display => 'Ollama Cloud';
4206
4207 @override
4208 String get server_address_ollama_cloud => 'ollama.com';
4209
4210 @override
4211 String get ollama_cloud_disclosure =>
4212 '連線至 Ollama Cloud 後,您的聊天訊息與輸入將傳送至 Ollama 的託管伺服器進行推論。LocalMind 不會追蹤或儲存您的對話。您可隨時在 ollama.com/settings/keys 撤銷此金鑰。';
4213
4214 @override
4215 String get api_key_required_ollama_cloud => 'Ollama Cloud 需要 API 金鑰';
4216
4217 @override
4218 String get api_key_hint_ollama_cloud => '貼上您的 Ollama Cloud API 金鑰';
4219
4220 @override
4221 String get add_server_ollama_cloud_subtitle =>
4222 '使用來自 ollama.com/settings/keys 的 API 金鑰連線至 Ollama Cloud,以存取託管雲端模型。';
4223
4224 @override
4225 String get add_server_openrouter_subtitle =>
4226 '使用有效的 API 金鑰透過 OpenRouter 連線,並為此設定檔做好模型路由準備。';
4227
4228 @override
4229 String get add_server_requesty_subtitle =>
4230 '使用有效的 API 金鑰透過 Requesty 連線,並為此設定檔做好模型路由準備。';
4231
4232 @override
4233 String get add_server_endpoint_subtitle => '設定本地或自託管端點,並在儲存前驗證連線。';
4234
4235 @override
4236 String get server_type_openrouter => 'OpenRouter';
4237
4238 @override
4239 String get server_type_requesty => 'Requesty';
4240
4241 @override
4242 String get server_type_openrouter_sub => '統一雲端';
4243
4244 @override
4245 String get server_type_requesty_sub => '統一雲端';
4246
4247 @override
4248 String get ready_continue => '準備好繼續';
4249
4250 @override
4251 String get waiting_selection => '等待選擇';
4252
4253 @override
4254 String get setup_connection => '設定連線';
4255
4256 @override
4257 String setup_connection_desc(String server) {
4258 return '設定您的 $server 伺服器以開始對話。';
4259 }
4260
4261 @override
4262 String get server_name => '伺服器名稱';
4263
4264 @override
4265 String get name_required => '需要名稱';
4266
4267 @override
4268 String get name_max_50 => '最多 50 個字元';
4269
4270 @override
4271 String get host_label => '主機 / IP 地址';
4272
4273 @override
4274 String get host_required => '需要主機地址';
4275
4276 @override
4277 String get port_label => '連接埠';
4278
4279 @override
4280 String get port_required => '需要連接埠';
4281
4282 @override
4283 String get port_invalid => '必須是數字';
4284
4285 @override
4286 String get port_range => '輸入有效的連接埠號碼 (1-65535)';
4287
4288 @override
4289 String get api_key_required => 'API 金鑰 *';
4290
4291 @override
4292 String get api_key_optional => 'API 金鑰 (選填)';
4293
4294 @override
4295 String get api_key_required_openrouter => 'OpenRouter 需要 API 金鑰';
4296
4297 @override
4298 String get api_key_required_requesty => 'Requesty 需要 API 金鑰';
4299
4300 @override
4301 String get api_key_format => 'OpenRouter API 金鑰以 sk- 開頭';
4302
4303 @override
4304 String get my_server_hint => '我的伺服器';
4305
4306 @override
4307 String get name_length_validation => '名稱必須在 50 個字元以內';
4308
4309 @override
4310 String get host_valid => '輸入有效的主機名稱或 IP 地址';
4311
4312 @override
4313 String get api_key_hint_openrouter => 'sk-...';
4314
4315 @override
4316 String get api_key_hint_requesty => 'rqsty-...';
4317
4318 @override
4319 String get api_key_hint_generic => '適用於已驗證的伺服器';
4320
4321 @override
4322 String get update_server => '更新伺服器';
4323
4324 @override
4325 String get save_server => '儲存伺服器';
4326
4327 @override
4328 String get server_updated => '伺服器已更新';
4329
4330 @override
4331 String get server_added => '伺服器已新增';
4332
4333 @override
4334 String get download_model_title => '下載模型';
4335
4336 @override
4337 String get download_model_desc => '選擇要下載的模型。\n它將在您的裝置上本機執行。';
4338
4339 @override
4340 String get on_device_android_only => '裝置端推論目前僅可在 Android 上使用。';
4341
4342 @override
4343 String get total_ram => '總記憶體';
4344
4345 @override
4346 String get available => '可用';
4347
4348 @override
4349 String ram_min_required(String fileSize) {
4350 return '最低要求 $fileSize GB 記憶體 (RAM)';
4351 }
4352
4353 @override
4354 String download_progress(String percent, String speed) {
4355 return '$percent% • $speed';
4356 }
4357
4358 @override
4359 String eta_label(String eta) {
4360 return '預計剩餘時間: $eta';
4361 }
4362
4363 @override
4364 String paused_progress(String percent) {
4365 return '已暫停 - $percent%';
4366 }
4367
4368 @override
4369 String ram_warning_body_download(String ram, String totalMemory) {
4370 return '此模型需要至少 $ram GB 記憶體,但您的裝置僅有 $totalMemory。它可能無法正常執行,或會導致應用程式當機。';
4371 }
4372
4373 @override
4374 String ram_warning_body_load(String availableRAM, String ram) {
4375 return '您的裝置目前有 $availableRAM 可用記憶體,但此模型推薦至少 $ram GB。載入它可能會失敗或導致系統不穩定。';
4376 }
4377
4378 @override
4379 String get choose_theme => '選擇主題';
4380
4381 @override
4382 String get choose_theme_desc => '個人化應用程式外觀。您隨時可以在設定中變更此項。';
4383
4384 @override
4385 String get theme_card_system => '系統';
4386
4387 @override
4388 String get theme_card_system_sub => '符合您的裝置設定';
4389
4390 @override
4391 String get theme_card_light => '淺色';
4392
4393 @override
4394 String get theme_card_light_sub => '乾淨明亮';
4395
4396 @override
4397 String get theme_card_dark => '深色';
4398
4399 @override
4400 String get theme_card_dark_sub => '保護眼睛';
4401
4402 @override
4403 String get theme_card_claude => 'Claude';
4404
4405 @override
4406 String get theme_card_claude_sub => '溫馨的桃色色調主題';
4407
4408 @override
4409 String get stay_updated => '保持更新';
4410
4411 @override
4412 String get stay_updated_desc => '在您的 AI 模型下載完成或長時間執行的任務結束時獲得通知。';
4413
4414 @override
4415 String get notification_benefit_downloads => '模型下載進度';
4416
4417 @override
4418 String get notification_benefit_completions => '生成完成';
4419
4420 @override
4421 String get notification_benefit_background => '背景工作狀態';
4422
4423 @override
4424 String get allow_notifications => '允許通知';
4425
4426 @override
4427 String get servers_title => '伺服器';
4428
4429 @override
4430 String get no_servers_yet => '尚無伺服器';
4431
4432 @override
4433 String get no_servers_desc => '新增您的首個伺服器以開始與 AI 模型對話。';
4434
4435 @override
4436 String get add_server => '新增伺服器';
4437
4438 @override
4439 String switched_to_server(String name) {
4440 return '已切換到 $name';
4441 }
4442
4443 @override
4444 String get edit_server => '編輯伺服器';
4445
4446 @override
4447 String get add_server_title => '新增伺服器';
4448
4449 @override
4450 String get server_type_label => '伺服器類型';
4451
4452 @override
4453 String get server_icon_label => '伺服器圖示';
4454
4455 @override
4456 String get default_icon => '預設圖示';
4457
4458 @override
4459 String get server_type_lm_studio_display => 'LM Studio';
4460
4461 @override
4462 String get server_type_openai_display => '相容 OpenAI';
4463
4464 @override
4465 String get server_type_ollama_display => 'Ollama';
4466
4467 @override
4468 String get server_type_openrouter_display => 'OpenRouter';
4469
4470 @override
4471 String get server_type_requesty_display => 'Requesty';
4472
4473 @override
4474 String get server_type_on_device_display => '裝置端';
4475
4476 @override
4477 String get server_address_openrouter => 'openrouter.ai';
4478
4479 @override
4480 String get server_address_requesty => 'router.requesty.ai';
4481
4482 @override
4483 String get server_address_on_device => '本機推論';
4484
4485 @override
4486 String server_address_format(String host, String port) {
4487 return '$host:$port';
4488 }
4489
4490 @override
4491 String get default_badge => '預設';
4492
4493 @override
4494 String get set_as_default => '設為預設';
4495
4496 @override
4497 String get select_icon => '選擇圖示';
4498
4499 @override
4500 String get select_icon_desc => '為您的伺服器選擇一個圖示';
4501
4502 @override
4503 String get search_icons_hint => '搜尋圖示...';
4504
4505 @override
4506 String get server_icon_stack => '伺服器堆疊';
4507
4508 @override
4509 String get server_icon_stack2 => '伺服器堆疊 02';
4510
4511 @override
4512 String get server_icon_stack3 => '伺服器堆疊 03';
4513
4514 @override
4515 String get server_icon_cloud => '雲端';
4516
4517 @override
4518 String get server_icon_cloud_server => '雲端伺服器';
4519
4520 @override
4521 String get server_icon_mcp => 'MCP 伺服器';
4522
4523 @override
4524 String get server_icon_database => '資料庫';
4525
4526 @override
4527 String get server_icon_database1 => '資料庫 01';
4528
4529 @override
4530 String get server_icon_database2 => '資料庫 02';
4531
4532 @override
4533 String get server_icon_cpu => 'CPU';
4534
4535 @override
4536 String get server_icon_chip => '晶片';
4537
4538 @override
4539 String get server_icon_chip2 => '晶片 02';
4540
4541 @override
4542 String get server_icon_computer => '電腦';
4543
4544 @override
4545 String get server_icon_laptop => '筆記型電腦';
4546
4547 @override
4548 String get server_icon_terminal => '終端機';
4549
4550 @override
4551 String get server_icon_code => '程式碼';
4552
4553 @override
4554 String get server_icon_ai_brain => 'AI 大腦';
4555
4556 @override
4557 String get server_icon_ai_brain2 => 'AI 大腦 02';
4558
4559 @override
4560 String get server_icon_ai_cloud => 'AI 雲端';
4561
4562 @override
4563 String get server_icon_ai_network => 'AI 網路';
4564
4565 @override
4566 String get server_icon_ai_chat => 'AI 對話';
4567
4568 @override
4569 String get server_icon_cellular => '蜂窩網路';
4570
4571 @override
4572 String get server_icon_plug1 => '插頭 01';
4573
4574 @override
4575 String get server_icon_plug2 => '插頭 02';
4576
4577 @override
4578 String get server_icon_bot => '機器人';
4579
4580 @override
4581 String get server_icon_bot2 => '機器人 02';
4582
4583 @override
4584 String get server_icon_robotic => '機器人聲音';
4585
4586 @override
4587 String get server_icon_rocket => '火箭';
4588
4589 @override
4590 String get server_icon_star => 'Star';
4591
4592 @override
4593 String get server_icon_settings1 => '設定 01';
4594
4595 @override
4596 String get server_icon_settings2 => '設定 02';
4597
4598 @override
4599 String get server_icon_home1 => '首頁 01';
4600
4601 @override
4602 String get server_icon_home2 => '首頁 02';
4603
4604 @override
4605 String get server_icon_folder1 => '資料夾 01';
4606
4607 @override
4608 String get server_icon_folder2 => '資料夾 02';
4609
4610 @override
4611 String get server_icon_file1 => '檔案 01';
4612
4613 @override
4614 String get server_icon_lock => '鎖';
4615
4616 @override
4617 String get server_icon_key => '鑰匙 01';
4618
4619 @override
4620 String get server_icon_link => '連結 01';
4621
4622 @override
4623 String get server_icon_globe => '地球儀';
4624
4625 @override
4626 String get server_icon_api => 'API';
4627
4628 @override
4629 String get server_icon_arrow_right => '右箭頭 01';
4630
4631 @override
4632 String get server_icon_check => '勾選圓圈';
4633
4634 @override
4635 String get server_icon_alert => '警報圓圈';
4636
4637 @override
4638 String get server_icon_info => '資訊圓圈';
4639
4640 @override
4641 String get server_icon_zap => 'Zap';
4642
4643 @override
4644 String get server_icon_cloud_upload => '雲端上傳';
4645
4646 @override
4647 String get server_icon_cloud_download => '雲端下載';
4648
4649 @override
4650 String get server_icon_refresh => '重新整理';
4651
4652 @override
4653 String get server_icon_hard_drive => '硬碟';
4654
4655 @override
4656 String get server_icon_drive => '磁碟機';
4657
4658 @override
4659 String get personas_title => '角色';
4660
4661 @override
4662 String get persona_category_general => '通用';
4663
4664 @override
4665 String get persona_category_coding => '程式設計';
4666
4667 @override
4668 String get persona_category_education => '教育';
4669
4670 @override
4671 String get persona_category_creative => '創意';
4672
4673 @override
4674 String get persona_builtin_section => '內建';
4675
4676 @override
4677 String get persona_my_section => '我的角色';
4678
4679 @override
4680 String get clone_edit => '複製並編輯';
4681
4682 @override
4683 String get builtin_badge => '內建';
4684
4685 @override
4686 String get no_personas_found => '未找到任何角色';
4687
4688 @override
4689 String get no_personas_desc => '建立您的第一個角色以定制 AI 行為。';
4690
4691 @override
4692 String get edit_persona => '編輯角色';
4693
4694 @override
4695 String get create_persona => '建立角色';
4696
4697 @override
4698 String get create_persona_button => '建立';
4699
4700 @override
4701 String get emoji_label => '表情符號';
4702
4703 @override
4704 String get name_label => '名稱';
4705
4706 @override
4707 String get my_persona_hint => '我的角色';
4708
4709 @override
4710 String get category_label => '分類';
4711
4712 @override
4713 String get description_optional => '描述 (選填)';
4714
4715 @override
4716 String get description_hint => '此角色要做的是...';
4717
4718 @override
4719 String get system_prompt => '系統提示詞';
4720
4721 @override
4722 String character_count_max(int currentLen) {
4723 return '$currentLen/4000';
4724 }
4725
4726 @override
4727 String get no_prompt_placeholder => '尚無提示詞...';
4728
4729 @override
4730 String get prompt_hint => '你是一個得力的助手...';
4731
4732 @override
4733 String get prompt_required => '需要系統提示詞';
4734
4735 @override
4736 String get prompt_max_chars => '最多 4000 個字元';
4737
4738 @override
4739 String get advanced_settings => '進階設定';
4740
4741 @override
4742 String get temperature_label => '溫度 (0.0-2.0)';
4743
4744 @override
4745 String get top_p_label => 'Top P (0.0-1.0)';
4746
4747 @override
4748 String get temp_hint => '0.7';
4749
4750 @override
4751 String get top_p_hint => '0.9';
4752
4753 @override
4754 String get range_0_2 => '0.0-2.0';
4755
4756 @override
4757 String get range_0_1 => '0.0-1.0';
4758
4759 @override
4760 String get persona_updated => '角色已更新';
4761
4762 @override
4763 String get persona_created => '角色已建立';
4764
4765 @override
4766 String get tts_models_title => '語音合成模型';
4767
4768 @override
4769 String get always_available => '始終可用';
4770
4771 @override
4772 String get tts_system_desc => '使用您裝置內建的語音合成引擎。\n無需額外下載。語音選擇依賴您的裝置系統設定。';
4773
4774 @override
4775 String get downloading_status => '正在下載...';
4776
4777 @override
4778 String tts_kitten_desc(String size) {
4779 return '擁有 8 種表現力聲音的閃電般高速類神經網路 TTS。\n需要下載 $size。';
4780 }
4781
4782 @override
4783 String tts_piper_desc(String size) {
4784 return '快速離線 Piper 語音,擁有 2 種極極具表現力的聲音。\n每個聲音需要下載 $size。';
4785 }
4786
4787 @override
4788 String engine_spec(String sizeMb, String ramMb, int voiceCount) {
4789 return '$sizeMb MB · $ramMb MB 記憶體 · $voiceCount 種語音';
4790 }
4791
4792 @override
4793 String get on_device_models_title => '裝置端模型';
4794
4795 @override
4796 String get settings_huggingface_token => 'Hugging Face 權杖(選用)';
4797
4798 @override
4799 String get settings_huggingface_token_desc =>
4800 '僅限受限制模型需要(例如 Gemma)。可在 huggingface.co/settings/tokens 取得權杖。';
4801
4802 @override
4803 String get settings_huggingface_token_set => '權杖已儲存';
4804
4805 @override
4806 String get settings_huggingface_token_cleared => '權杖已清除';
4807
4808 @override
4809 String get model_requires_huggingface_token => '需要 Hugging Face 權杖';
4810
4811 @override
4812 String get model_missing_huggingface_token =>
4813 '此模型在 Hugging Face 上受限制。請在「設定 → 裝置端推論」中加入權杖後再下載。';
4814
4815 @override
4816 String get set_huggingface_token => '設定權杖';
4817
4818 @override
4819 String get clear_huggingface_token => '清除';
4820
4821 @override
4822 String get edit_huggingface_token_dialog_title => 'Hugging Face 存取權杖';
4823
4824 @override
4825 String get huggingface_token_dialog_hint => 'hf_…';
4826
4827 @override
4828 String get server_type_ollama_desc => '本機 AI 引擎。不需要 API 金鑰。';
4829
4830 @override
4831 String get server_type_on_device_desc => '在您的手機上執行。某些模型需要 Hugging Face 權杖。';
4832
4833 @override
4834 String get server_type_lm_studio_desc => '本機 API 伺服器。不需要 API 金鑰。';
4835
4836 @override
4837 String get available_models => '可用模型';
4838
4839 @override
4840 String get device_memory => '裝置記憶體';
4841
4842 @override
4843 String get ram_usage => '記憶體佔用';
4844
4845 @override
4846 String get memory_healthy => '健康';
4847
4848 @override
4849 String get memory_critical => '嚴重警告';
4850
4851 @override
4852 String get memory_low => '偏低';
4853
4854 @override
4855 String ram_used(String percent) {
4856 return '已使用 $percent%';
4857 }
4858
4859 @override
4860 String get available_ram => '可用記憶體';
4861
4862 @override
4863 String get total_capacity => '總容量';
4864
4865 @override
4866 String get loaded_status => '已載入';
4867
4868 @override
4869 String get inference_backend => '推論後端';
4870
4871 @override
4872 String get backend_ios_notice => 'iOS 上僅支援 CPU 後端。';
4873
4874 @override
4875 String get backend_cpu_desc => '適用於所有裝置。相容性最好。';
4876
4877 @override
4878 String get backend_gpu_desc => 'OpenCL 加速。在支援的裝置上執行更快。';
4879
4880 @override
4881 String get backend_npu_desc => '廠商 NPU (高通/聯發科)。最快的推論速度。';
4882
4883 @override
4884 String get select_model_title => '選擇模型';
4885
4886 @override
4887 String get refresh_models => '重新整理模型';
4888
4889 @override
4890 String get search_models_hint => '搜尋模型...';
4891
4892 @override
4893 String get no_server_connected => '未連線伺服器';
4894
4895 @override
4896 String get add_server_first => '請先新增伺服器以查看可用模型。';
4897
4898 @override
4899 String get failed_load_models => '載入模型失敗';
4900
4901 @override
4902 String get no_models_available => '無可用模型';
4903
4904 @override
4905 String no_models_match(String searchQuery) {
4906 return '沒有符合 \"$searchQuery\" 的模型';
4907 }
4908
4909 @override
4910 String model_load_failed(String error) {
4911 return '載入模型失敗: $error';
4912 }
4913
4914 @override
4915 String model_unloaded_ollama(String name) {
4916 return '在 keep-alive 時間過去後,$name 將被自動卸載';
4917 }
4918
4919 @override
4920 String model_unloaded_success(String name) {
4921 return '$name 已成功卸載';
4922 }
4923
4924 @override
4925 String model_unload_failed(String error) {
4926 return '卸載模型失敗: $error';
4927 }
4928
4929 @override
4930 String get unload_from_server => '從伺服器卸載';
4931
4932 @override
4933 String context_chip(String ctx) {
4934 return '$ctx 上下文 (ctx)';
4935 }
4936
4937 @override
4938 String get unload_all_models => '卸載所有模型';
4939
4940 @override
4941 String loaded_models_count(int count) {
4942 return '已載入 $count 個模型';
4943 }
4944
4945 @override
4946 String get all_models_unloaded => '所有模型已卸載';
4947
4948 @override
4949 String get branch_chat => '分支聊天';
4950
4951 @override
4952 String get branch_chat_desc => '從此消息開始新建聊天';
4953
4954 @override
4955 String get edit_assistant_message_desc => '編輯助手消息的內容';
4956
4957 @override
4958 String switch_to_model(String modelName, Object model) {
4959 return '切換到模型 $model';
4960 }
4961
4962 @override
4963 String download_notification_title(String modelName) {
4964 return '正在下載 $modelName...';
4965 }
4966
4967 @override
4968 String get download_complete_notification => '下載完成!';
4969
4970 @override
4971 String download_complete_body(String modelName) {
4972 return '$modelName 已成功下載。';
4973 }
4974
4975 @override
4976 String download_failed_notification(String error) {
4977 return '下載失敗: $error';
4978 }
4979
4980 @override
4981 String download_failed_body(String modelName) {
4982 return '下載 $modelName 失敗。';
4983 }
4984
4985 @override
4986 String get engine_name_system => '系統 TTS';
4987
4988 @override
4989 String get engine_tagline_system => '內建裝置引擎';
4990
4991 @override
4992 String get engine_name_kitten => 'Kitten TTS';
4993
4994 @override
4995 String get engine_tagline_kitten => '高速類神經網路 TTS';
4996
4997 @override
4998 String get engine_name_sherpa => 'Sherpa ONNX VITS';
4999
5000 @override
Showing first 5,000 of 6,195 lines. View raw