main
dart 3,242 lines 77.6 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 German (`de`).
8 class AppLocalizationsDe extends AppLocalizations {
9 AppLocalizationsDe([String locale = 'de']) : super(locale);
10
11 @override
12 String get app_name => 'LocalMind';
13
14 @override
15 String get app_tagline => 'Ihre KI. Ihr Gerät. Ihre Regeln.';
16
17 @override
18 String get app_version => '1.0.0';
19
20 @override
21 String get cancel => 'Abbrechen';
22
23 @override
24 String get confirm => 'Bestätigen';
25
26 @override
27 String get delete => 'Löschen';
28
29 @override
30 String get save => 'Speichern';
31
32 @override
33 String get retry => 'Wiederholen';
34
35 @override
36 String get close => 'Schließen';
37
38 @override
39 String get done => 'Fertig';
40
41 @override
42 String get continue_action => 'Weiter';
43
44 @override
45 String get skip => 'Überspringen';
46
47 @override
48 String get install => 'Installieren';
49
50 @override
51 String get download => 'Herunterladen';
52
53 @override
54 String get resume => 'Fortsetzen';
55
56 @override
57 String get pause => 'Pausieren';
58
59 @override
60 String get stop => 'Stoppen';
61
62 @override
63 String get edit => 'Bearbeiten';
64
65 @override
66 String get preview => 'Vorschau';
67
68 @override
69 String get unload => 'Entladen';
70
71 @override
72 String get load => 'Laden';
73
74 @override
75 String get rename => 'Umbenennen';
76
77 @override
78 String get pin => 'Anheften';
79
80 @override
81 String get unpin => 'Ablösen';
82
83 @override
84 String get share => 'Teilen';
85
86 @override
87 String get copy => 'Kopieren';
88
89 @override
90 String get copied => 'Kopiert!';
91
92 @override
93 String get copied_to_clipboard => 'In Zwischenablage kopiert';
94
95 @override
96 String get select => 'Select';
97
98 @override
99 String get active => 'Active';
100
101 @override
102 String get all => 'Alle';
103
104 @override
105 String get none => 'Keine';
106
107 @override
108 String get none_selected => 'None selected';
109
110 @override
111 String get online => 'Online';
112
113 @override
114 String get connected => 'Connected';
115
116 @override
117 String get checking => 'Checking';
118
119 @override
120 String get offline => 'Offline';
121
122 @override
123 String get error => 'Fehler';
124
125 @override
126 String get unknown_error => 'Unknown error';
127
128 @override
129 String get not_now => 'Not Now';
130
131 @override
132 String get enable => 'Enable';
133
134 @override
135 String get proceed_anyway => 'Proceed Anyway';
136
137 @override
138 String get test_connection => 'Verbindung testen';
139
140 @override
141 String get testing => 'Testing...';
142
143 @override
144 String get connection_successful => 'Verbindung erfolgreich!';
145
146 @override
147 String get connection_failed =>
148 'Verbindung fehlgeschlagen. Überprüfen Sie Ihre Einstellungen.';
149
150 @override
151 String get save_continue => 'Speichern & Continue';
152
153 @override
154 String get save_changes => 'Speichern Changes';
155
156 @override
157 String get finish_setup => 'Finish Setup';
158
159 @override
160 String get start_new_chat => 'Start New Chat';
161
162 @override
163 String get cannot_undo => 'This action cannot be undone.';
164
165 @override
166 String get ram_warning => 'RAM Warnung';
167
168 @override
169 String get recommended => 'RECOMMENDED';
170
171 @override
172 String get may_be_large => 'May be too large for this device';
173
174 @override
175 String get calculating => 'Calculating...';
176
177 @override
178 String get download_failed => 'Download fehlgeschlagen';
179
180 @override
181 String get downloaded => 'Downloaded';
182
183 @override
184 String get not_downloaded => 'Not downloaded';
185
186 @override
187 String get installed => 'Installed';
188
189 @override
190 String get not_installed => 'Not installed';
191
192 @override
193 String get loading => 'Wird geladen…';
194
195 @override
196 String get thinking => 'Thinking';
197
198 @override
199 String get processing => 'Processing...';
200
201 @override
202 String get initializing => 'Initializing...';
203
204 @override
205 String get ready => 'Ready';
206
207 @override
208 String get preparing_app => 'Preparing app...';
209
210 @override
211 String get initializing_services => 'Initializing services...';
212
213 @override
214 String get configuring_server => 'Configuring server...';
215
216 @override
217 String get startup_failed => 'Startup failed';
218
219 @override
220 String get something_went_wrong => 'Something went wrong';
221
222 @override
223 String get delete_model_title => 'Modell löschen?';
224
225 @override
226 String delete_model_body(String name) {
227 return 'Möchten Sie $name wirklich löschen?';
228 }
229
230 @override
231 String delete_model_body_with_size(String name, String size) {
232 return 'Möchten Sie $name wirklich löschen? Dadurch werden ca. $size Speicherplatz freigegeben.\n\nSie können dieses Modell später bei Bedarf erneut herunterladen.';
233 }
234
235 @override
236 String get delete_voice_title => 'Löschen Voice';
237
238 @override
239 String delete_voice_body(String name, String size) {
240 return 'Möchten Sie wirklich löschen: $name? This will free up approximately $size of space.\n\nYou can download this voice again later if needed.';
241 }
242
243 @override
244 String get delete_server_title => 'Server löschen?';
245
246 @override
247 String delete_server_body(String name) {
248 return 'Möchten Sie den Server \"$name\" wirklich löschen? Dies kann nicht rückgängig gemacht werden.';
249 }
250
251 @override
252 String get delete_conversation_title => 'Unterhaltung löschen?';
253
254 @override
255 String delete_conversation_body(String title) {
256 return 'Möchten Sie \"$title\" wirklich löschen? Dies kann nicht rückgängig gemacht werden.';
257 }
258
259 @override
260 String get delete_message_title => 'Löschen message?';
261
262 @override
263 String delete_persona_title(String name) {
264 return '\"$name\" löschen?';
265 }
266
267 @override
268 String get delete_persona_body =>
269 'Dies kann nicht rückgängig gemacht werden.';
270
271 @override
272 String get delete_builtin_persona_body =>
273 'This is a built-in persona. You can restore it later from Einstellungen.';
274
275 @override
276 String get restore_builtin_personas => 'Restore default personas';
277
278 @override
279 String get restore_builtin_personas_desc =>
280 'Re-add any built-in personas you\'ve deleted';
281
282 @override
283 String get restore_builtin_personas_success => 'Default personas restored';
284
285 @override
286 String get clear_personas => 'Clear personas';
287
288 @override
289 String get enable_image_compression => 'Compress images before sending';
290
291 @override
292 String get enable_image_compression_desc =>
293 'Resize and compress attached images so uploads stay within server limits';
294
295 @override
296 String get image_compression_level => 'Compression aggressiveness';
297
298 @override
299 String get image_compression_level_desc =>
300 'Higher aggressiveness produces smaller uploads at lower quality';
301
302 @override
303 String get image_compression_level_low => 'Low';
304
305 @override
306 String get image_compression_level_medium => 'Medium';
307
308 @override
309 String get image_compression_level_high => 'High';
310
311 @override
312 String get sort_models_tooltip => 'Sort models';
313
314 @override
315 String get sort_by_favorites => 'Favorites first';
316
317 @override
318 String get sort_by_name => 'Name (A-Z)';
319
320 @override
321 String get sort_by_size_smallest => 'Size (smallest first)';
322
323 @override
324 String get sort_by_size_largest => 'Size (largest first)';
325
326 @override
327 String get sort_by_context_length => 'Context length';
328
329 @override
330 String bulk_ai_rename_progress(int done, int total) {
331 return 'Renaming $done/$total...';
332 }
333
334 @override
335 String selected_count(int count) {
336 return '$count ausgewählt';
337 }
338
339 @override
340 String get ai_rename_tooltip => 'Rename selected with AI';
341
342 @override
343 String get new_chat_in_folder_tooltip => 'New chat in this folder';
344
345 @override
346 String total_tokens_count(int count) {
347 return '$count Tokens';
348 }
349
350 @override
351 String get smart_replies_use_persona => 'Use persona in smart replies';
352
353 @override
354 String get smart_replies_use_persona_desc =>
355 'Suggested replies match the tone of the active persona instead of a generic assistant';
356
357 @override
358 String get keep_persona_on_new_chat => 'Keep persona on new chat';
359
360 @override
361 String get keep_persona_on_new_chat_desc =>
362 'Don\'t clear the selected persona(s) after starting a new chat';
363
364 @override
365 String get role_swap_button_enabled => 'Show role-swap button';
366
367 @override
368 String get role_swap_button_enabled_desc =>
369 'Show a button in the chat input to send your message as the assistant instead of the user, without generating a response';
370
371 @override
372 String get send_as_user_tooltip => 'Send as user';
373
374 @override
375 String get send_as_assistant_tooltip => 'Send as assistant (no response)';
376
377 @override
378 String get insert_without_generating_tooltip => 'Insert without generating';
379
380 @override
381 String get token_usage_title => 'Token Usage';
382
383 @override
384 String get total_tokens_label => 'Tokens used';
385
386 @override
387 String get usage_percent_label => 'Context used';
388
389 @override
390 String get export_choice_title => 'Export';
391
392 @override
393 String get export_choice_body => 'How would you like to export this?';
394
395 @override
396 String get copy_to_clipboard => 'Copy to Clipboard';
397
398 @override
399 String bulk_export_conversations_success(int count) {
400 return 'Exported $count conversations';
401 }
402
403 @override
404 String get bulk_ai_rename_confirm_title => 'Rename with AI?';
405
406 @override
407 String bulk_ai_rename_confirm_body(int count) {
408 return 'This will ask the AI to generate a new title for each of the $count selected conversations, replacing their current titles. This can take a while and cannot be undone.';
409 }
410
411 @override
412 String get sort_by_modified_date => 'Last modified';
413
414 @override
415 String get sort_by_created_date => 'Date created';
416
417 @override
418 String get sort_title => 'Sort';
419
420 @override
421 String get clear_conversation_title => 'Clear conversation?';
422
423 @override
424 String get clear_conversation_body =>
425 'This will delete all messages in this conversation.';
426
427 @override
428 String get clear => 'Leeren';
429
430 @override
431 String label_completed(String label) {
432 return '$label completed';
433 }
434
435 @override
436 String error_with_message(String error) {
437 return 'Fehler: $error';
438 }
439
440 @override
441 String preview_failed(String error) {
442 return 'Vorschau fehlgeschlagen: $error';
443 }
444
445 @override
446 String loading_model(String modelId) {
447 return 'Lade $modelId…';
448 }
449
450 @override
451 String model_loaded(String modelId, String backend) {
452 return 'Modell geladen: $modelId ($backend)';
453 }
454
455 @override
456 String get no_model_loaded =>
457 'No model loaded. Tap \"Manage On-Device Modelle\" to download and load a model.';
458
459 @override
460 String loading_model_error(String error) {
461 return 'Fehler: $error';
462 }
463
464 @override
465 String get delete_conversation => 'Unterhaltung löschen';
466
467 @override
468 String get nav_history => 'History';
469
470 @override
471 String get nav_servers => 'Server';
472
473 @override
474 String get nav_local_models => 'Local Modelle';
475
476 @override
477 String get nav_tts => 'Sprachmodelle';
478
479 @override
480 String get nav_personas => 'Personas';
481
482 @override
483 String get nav_settings => 'Einstellungen';
484
485 @override
486 String get nav_new_chat => 'New Chat';
487
488 @override
489 String get search_hint => 'Suchen conversations...';
490
491 @override
492 String get no_server_selected => 'No server selected';
493
494 @override
495 String get switch_server => 'Switch Server';
496
497 @override
498 String get switch_server_subtitle => 'Choose a server to connect to';
499
500 @override
501 String get manage_servers => 'Manage Servers';
502
503 @override
504 String get open_source => 'Open Source';
505
506 @override
507 String get open_source_desc => 'LocalMind ist Open-Source-Software.';
508
509 @override
510 String get star_on_github => 'Star on GitHub';
511
512 @override
513 String get add_more => 'Hinzufügen more';
514
515 @override
516 String get on_github => 'on GitHub';
517
518 @override
519 String get could_not_open_github =>
520 'GitHub konnte nicht geöffnet werden. Bitte versuchen Sie es später erneut.';
521
522 @override
523 String get settings_title => 'Einstellungen';
524
525 @override
526 String get settings_appearance => 'Erscheinungsbild';
527
528 @override
529 String get settings_language => 'Sprache';
530
531 @override
532 String get language_system_default => 'Systemstandard';
533
534 @override
535 String get settings_tts => 'Text-to-Speech (TTS)';
536
537 @override
538 String get settings_android_assistant => 'Android-Assistent';
539
540 @override
541 String get assistant_default_title => 'Standard-Sprachassistent';
542
543 @override
544 String get assistant_default_description =>
545 'Legen Sie Localmind als Ihren Standard-Sprachassistenten auf Android fest.';
546
547 @override
548 String get assistant_status_active =>
549 'Localmind ist als Standard-Assistent festgelegt';
550
551 @override
552 String get assistant_status_available =>
553 'Localmind kann als Standard-Assistent festgelegt werden';
554
555 @override
556 String get assistant_status_manual =>
557 'Öffnen Sie die Systemeinstellungen und wählen Sie Localmind manuell aus';
558
559 @override
560 String get assistant_status_unsupported =>
561 'Die Standard-Assistenteneinstellung ist nur ab Android 7.0+ verfügbar';
562
563 @override
564 String get assistant_status_checking => 'Assistentenstatus wird überprüft…';
565
566 @override
567 String get assistant_set_default => 'Standard-Assistent festlegen';
568
569 @override
570 String get assistant_open_settings => 'Assistenteneinstellungen öffnen';
571
572 @override
573 String assistant_error(Object error) {
574 return 'Fehler: $error';
575 }
576
577 @override
578 String get settings_behavior => 'Verhalten';
579
580 @override
581 String get settings_on_device => 'On-Device Inference';
582
583 @override
584 String get settings_default_server => 'Standardserver';
585
586 @override
587 String get settings_default_persona => 'Standard-Persona';
588
589 @override
590 String get settings_default_model => 'Standardmodell';
591
592 @override
593 String get settings_default_model_desc =>
594 'Automatically selected when you start a new chat.';
595
596 @override
597 String get settings_privacy => 'Datenschutz & Daten';
598
599 @override
600 String get settings_data_management => 'Data Management';
601
602 @override
603 String get settings_about => 'Über LocalMind';
604
605 @override
606 String get theme => 'Theme';
607
608 @override
609 String get theme_system => 'System';
610
611 @override
612 String get theme_light => 'Light';
613
614 @override
615 String get theme_dark => 'Dark';
616
617 @override
618 String get theme_claude => 'Claude';
619
620 @override
621 String get font_size => 'Font Size';
622
623 @override
624 String get font_size_desc => 'Adjust text size in chat.';
625
626 @override
627 String get font_preview => 'The quick brown fox jumps over the lazy dog.';
628
629 @override
630 String get code_theme_dark => 'Code Theme (Dark)';
631
632 @override
633 String get code_theme_light => 'Code Theme (Light)';
634
635 @override
636 String get code_theme_desc =>
637 'Choose syntax highlighting theme for code blocks.';
638
639 @override
640 String get tts_engine => 'TTS Engine';
641
642 @override
643 String get tts_engine_system => 'System TTS';
644
645 @override
646 String get tts_engine_kitten => 'Kitten TTS';
647
648 @override
649 String get voice => 'Voice';
650
651 @override
652 String get voice_female => 'Female';
653
654 @override
655 String get voice_male => 'Male';
656
657 @override
658 String get voice_other => 'Other';
659
660 @override
661 String get tts_speed => 'TTS Speed';
662
663 @override
664 String get tts_speed_desc => 'Adjust the playback rate.';
665
666 @override
667 String get manage_tts_models => 'Manage TTS Modelle';
668
669 @override
670 String get manage_on_device_models => 'Manage On-Device Modelle';
671
672 @override
673 String get enable_smart_reply => 'On-Device Smart Replies';
674
675 @override
676 String get ai_user_response_enabled => 'AI user message (hold send)';
677
678 @override
679 String get ai_user_response_enabled_desc =>
680 'Hold the send button for 3 seconds to have the AI write and send your next message';
681
682 @override
683 String get ai_user_response_tooltip => 'Generate user message with AI';
684
685 @override
686 String get streaming_responses => 'Streaming Responses';
687
688 @override
689 String get auto_generate_titles => 'Auto-generate Titles';
690
691 @override
692 String get send_on_enter => 'Send on Enter';
693
694 @override
695 String get show_system_messages => 'Send Default System Prompt';
696
697 @override
698 String get show_system_messages_desc =>
699 'When no persona is selected, send a default assistant system prompt with each request';
700
701 @override
702 String get show_system_messages_in_chat => 'Show System Messages in Chat';
703
704 @override
705 String get show_system_messages_in_chat_desc =>
706 'Display system messages (e.g. from an imported backup) as visible bubbles in the conversation';
707
708 @override
709 String get auto_collapse_thinking => 'Denkprozess automatisch einklappen';
710
711 @override
712 String get auto_collapse_thinking_desc =>
713 'Denkprozess nach Abschluss der Antwort automatisch einklappen, wenn eine Hauptantwort vorhanden ist';
714
715 @override
716 String get haptic_feedback => 'Haptic Feedback';
717
718 @override
719 String get enable_mcp => 'Enable MCP';
720
721 @override
722 String get new_chat_mcp_default => 'New Chat MCP Default';
723
724 @override
725 String get show_data_indicator => 'Show Data Indicator';
726
727 @override
728 String get privacy_info => '\"LocalMind never sees your data\"';
729
730 @override
731 String get delete_all_conversations => 'Löschen All Conversations';
732
733 @override
734 String get reset_settings_defaults => 'Reset Einstellungen to Defaults';
735
736 @override
737 String get chat_title => 'LocalMind';
738
739 @override
740 String get chat_parameters_tooltip => 'Chat Parameters';
741
742 @override
743 String get change_persona => 'Change Persona';
744
745 @override
746 String get set_persona => 'Set Persona';
747
748 @override
749 String get remove_persona => 'Entfernen Persona';
750
751 @override
752 String get clear_conversation => 'Clear Conversation';
753
754 @override
755 String get connection_error => 'Connection error. Check your server.';
756
757 @override
758 String get disconnected => 'Disconnected from server.';
759
760 @override
761 String get configure => 'Configure';
762
763 @override
764 String get select_model => 'Modell auswählen';
765
766 @override
767 String get select_persona => 'Persona auswählen';
768
769 @override
770 String get manage_personas => 'Manage personas';
771
772 @override
773 String get personas_combine_hint =>
774 'Select multiple personas in chat to stack their system prompts.';
775
776 @override
777 String get start_conversation => 'Start a conversation';
778
779 @override
780 String get recent_chats => 'Recent chats';
781
782 @override
783 String get see_all => 'See all';
784
785 @override
786 String get quick_write => 'Help me write a function';
787
788 @override
789 String get quick_explain => 'Explain this code';
790
791 @override
792 String get quick_debug => 'Debug this for me';
793
794 @override
795 String get quick_async => 'How do I use async/await?';
796
797 @override
798 String get history_missing_title => 'History Missing';
799
800 @override
801 String get history_missing_desc =>
802 'Either the messages in this chat were deleted or the history record is corrupted.';
803
804 @override
805 String get technical_details => 'Technical Details';
806
807 @override
808 String get last_error => 'Last Fehler:';
809
810 @override
811 String get copy_info => 'Copy Info';
812
813 @override
814 String get conversation_id => 'Conversation ID';
815
816 @override
817 String get created_at => 'Created At';
818
819 @override
820 String get expected_messages => 'Expected Messages';
821
822 @override
823 String get debug_dialog_desc =>
824 'Diagnostic information to help identify synchronization issues.';
825
826 @override
827 String get chat_input_hint => 'Ask anything';
828
829 @override
830 String get send_message_tooltip => 'Send message';
831
832 @override
833 String get stop_generation_tooltip => 'Stop generation';
834
835 @override
836 String get attach_images_tooltip => 'Attach images or text';
837
838 @override
839 String get start_listening_tooltip => 'Start listening';
840
841 @override
842 String get stop_listening_tooltip => 'Stop listening';
843
844 @override
845 String tool_label(String toolCallId) {
846 return 'Tool: $toolCallId';
847 }
848
849 @override
850 String get tool_unknown => 'Tool: Unknown';
851
852 @override
853 String get message_options => 'Message options';
854
855 @override
856 String get copy_markdown => 'Copy as Markdown';
857
858 @override
859 String get copied_markdown => 'Copied as Markdown';
860
861 @override
862 String get read_aloud => 'Read Aloud';
863
864 @override
865 String get stop_reading => 'Stop Reading';
866
867 @override
868 String get more => 'More';
869
870 @override
871 String character_count(int length) {
872 return '$length Zeichen';
873 }
874
875 @override
876 String get edit_message => 'Nachricht bearbeiten';
877
878 @override
879 String get edit_message_desc =>
880 'Saving will remove the assistant response below and regenerate.';
881
882 @override
883 String get save_regenerate => 'Speichern & regenerate';
884
885 @override
886 String get chat_settings_title => 'Chat Einstellungen';
887
888 @override
889 String get reset_defaults => 'Reset Defaults';
890
891 @override
892 String get parameters_tab => 'Parameters';
893
894 @override
895 String get mcp_tab => 'MCP';
896
897 @override
898 String get temperature => 'Temperatur';
899
900 @override
901 String get temperature_desc =>
902 'Controls randomness: Higher = Creative, Lower = Focused';
903
904 @override
905 String get top_p => 'Top P';
906
907 @override
908 String get top_p_desc => 'Nucleus sampling threshold';
909
910 @override
911 String get max_tokens => 'Max Tokens';
912
913 @override
914 String get max_tokens_desc => 'Response limit';
915
916 @override
917 String get context_length => 'Context Length';
918
919 @override
920 String get context_length_desc => 'History window';
921
922 @override
923 String get mcp_disabled_warning =>
924 'MCP is disabled globally. Enable it in Einstellungen to use these features.';
925
926 @override
927 String get mcp_enable_chat => 'Enable MCP for this chat';
928
929 @override
930 String get auto_execute_tools => 'Auto-execute tools';
931
932 @override
933 String get beta_label => 'Beta';
934
935 @override
936 String get experimental_label => 'Experimental';
937
938 @override
939 String get add_ephemeral_mcp => 'Hinzufügen Ephemeral MCP Server';
940
941 @override
942 String get mcp_label_placeholder => 'Label';
943
944 @override
945 String get mcp_url_placeholder => 'URL (https://...)';
946
947 @override
948 String get active_integrations => 'Active Integrations';
949
950 @override
951 String get import_mcp_json => 'Import JSON';
952
953 @override
954 String get import_mcp_json_dialog_title => 'Import MCP Config JSON';
955
956 @override
957 String get import_mcp_json_instructions =>
958 'Copy your mcpServers JSON directly from LM Studio (mcp.json) or paste a plugin array below:';
959
960 @override
961 String get import_mcp_json_placeholder =>
962 'Paste mcpServers JSON or plugin list here...';
963
964 @override
965 String mcp_import_success(int count) {
966 return '$count Integration(en) erfolgreich importiert';
967 }
968
969 @override
970 String get mcp_import_failed => 'No valid MCP integrations found in JSON';
971
972 @override
973 String get enable_notifications => 'Enable Notifications';
974
975 @override
976 String get enable_notifications_desc =>
977 'Get notified when models finish downloading.';
978
979 @override
980 String get chat_history_title => 'Chat History';
981
982 @override
983 String get conversation_just_now => 'Just now';
984
985 @override
986 String conversation_minutes_ago(int minutes) {
987 return '${minutes}m ago';
988 }
989
990 @override
991 String conversation_hours_ago(int hours) {
992 return '${hours}h ago';
993 }
994
995 @override
996 String get conversation_yesterday => 'Yesterday';
997
998 @override
999 String conversation_days_ago(int days) {
1000 return '${days}d ago';
1001 }
1002
1003 @override
1004 String conversation_date(int month, int day, int year) {
1005 return '$month/$day/$year';
1006 }
1007
1008 @override
1009 String get options_tooltip => 'Options';
1010
1011 @override
1012 String get no_results_found => 'No results found';
1013
1014 @override
1015 String get no_conversations_yet => 'No conversations yet';
1016
1017 @override
1018 String get try_different_search => 'Try a different search term';
1019
1020 @override
1021 String get start_new_conversation => 'Start a new conversation';
1022
1023 @override
1024 String get rename_conversation => 'Unterhaltung umbenennen';
1025
1026 @override
1027 String get enter_new_title => 'Enter new title';
1028
1029 @override
1030 String get pinned_section => 'PINNED';
1031
1032 @override
1033 String get today_section => 'TODAY';
1034
1035 @override
1036 String get yesterday_section => 'YESTERDAY';
1037
1038 @override
1039 String get previous_7_days => 'PREVIOUS 7 DAYS';
1040
1041 @override
1042 String get previous_30_days => 'PREVIOUS 30 DAYS';
1043
1044 @override
1045 String get older_section => 'OLDER';
1046
1047 @override
1048 String get onboarding_choose_language => 'Wählen Sie Ihre Sprache';
1049
1050 @override
1051 String get onboarding_choose_language_desc =>
1052 'Sie können dies später jederzeit in den Einstellungen ändern.';
1053
1054 @override
1055 String get onboarding_localmind => 'LOCALMIND';
1056
1057 @override
1058 String get onboarding_connect_server => 'Connect Your\nServer';
1059
1060 @override
1061 String get onboarding_connect_desc =>
1062 'Geben Sie die Verbindungsdetails für Ihren KI-Server ein.';
1063
1064 @override
1065 String get openai_compatible_api => 'OpenAI-compatible API';
1066
1067 @override
1068 String get https_requires_ssl => 'HTTPS requires SSL';
1069
1070 @override
1071 String get most_local_setups_use_http => 'Most local setups use http://';
1072
1073 @override
1074 String get onboarding_welcome => 'Willkommen bei LocalMind';
1075
1076 @override
1077 String get server_type_on_device => 'Auf dem Gerät';
1078
1079 @override
1080 String get server_type_lm_studio => 'LM Studio';
1081
1082 @override
1083 String get server_type_ollama => 'Ollama';
1084
1085 @override
1086 String get server_type_ollama_cloud => 'Ollama Cloud';
1087
1088 @override
1089 String get server_type_ollama_cloud_sub => 'CLOUD MANAGED';
1090
1091 @override
1092 String get server_type_ollama_cloud_display => 'Ollama Cloud';
1093
1094 @override
1095 String get server_address_ollama_cloud => 'ollama.com';
1096
1097 @override
1098 String get ollama_cloud_disclosure =>
1099 'By connecting Ollama Cloud, your chat messages and inputs are sent to Ollama\'s managed servers for inference. LocalMind does not track or store your conversations. You can revoke this key any time at ollama.com/settings/keys.';
1100
1101 @override
1102 String get api_key_required_ollama_cloud =>
1103 'API Key required for Ollama Cloud';
1104
1105 @override
1106 String get api_key_hint_ollama_cloud => 'Paste your Ollama Cloud API key';
1107
1108 @override
1109 String get add_server_ollama_cloud_subtitle =>
1110 'Connect to Ollama Cloud with an API key from ollama.com/settings/keys to access managed cloud models.';
1111
1112 @override
1113 String get add_server_openrouter_subtitle =>
1114 'Connect through OpenRouter with a valid API key and keep this profile ready for model routing.';
1115
1116 @override
1117 String get add_server_requesty_subtitle =>
1118 'Connect through Requesty with a valid API key and keep this profile ready for model routing.';
1119
1120 @override
1121 String get add_server_endpoint_subtitle =>
1122 'Configure a local or self-hosted endpoint, then verify the connection before saving.';
1123
1124 @override
1125 String get server_type_openrouter => 'OpenRouter';
1126
1127 @override
1128 String get server_type_requesty => 'Requesty';
1129
1130 @override
1131 String get server_type_openrouter_sub => 'UNIFIED CLOUD';
1132
1133 @override
1134 String get server_type_requesty_sub => 'UNIFIED CLOUD';
1135
1136 @override
1137 String get ready_continue => 'BEREIT ZUM FORTFAHREN';
1138
1139 @override
1140 String get waiting_selection => 'WAITING FOR SELECTION';
1141
1142 @override
1143 String get setup_connection => 'Setup Connection';
1144
1145 @override
1146 String setup_connection_desc(String server) {
1147 return 'Configure your $server server to start chatting.';
1148 }
1149
1150 @override
1151 String get server_name => 'Servername';
1152
1153 @override
1154 String get name_required => 'Name required';
1155
1156 @override
1157 String get name_max_50 => 'Max 50 characters';
1158
1159 @override
1160 String get host_label => 'Host / IP Address';
1161
1162 @override
1163 String get host_required => 'Host required';
1164
1165 @override
1166 String get port_label => 'Port';
1167
1168 @override
1169 String get port_required => 'Port required';
1170
1171 @override
1172 String get port_invalid => 'Must be a number';
1173
1174 @override
1175 String get port_range => 'Enter a valid port (1-65535)';
1176
1177 @override
1178 String get api_key_required => 'API Key *';
1179
1180 @override
1181 String get api_key_optional => 'API Key (Optional)';
1182
1183 @override
1184 String get api_key_required_openrouter => 'API Key required for OpenRouter';
1185
1186 @override
1187 String get api_key_required_requesty => 'API Key required for Requesty';
1188
1189 @override
1190 String get api_key_format => 'OpenRouter API keys start with sk-';
1191
1192 @override
1193 String get my_server_hint => 'My Server';
1194
1195 @override
1196 String get name_length_validation => 'Name must be 50 characters or less';
1197
1198 @override
1199 String get host_valid => 'Enter a valid hostname or IP address';
1200
1201 @override
1202 String get api_key_hint_openrouter => 'sk-...';
1203
1204 @override
1205 String get api_key_hint_requesty => 'rqsty-...';
1206
1207 @override
1208 String get api_key_hint_generic => 'For authenticated servers';
1209
1210 @override
1211 String get update_server => 'Update Server';
1212
1213 @override
1214 String get save_server => 'Speichern Server';
1215
1216 @override
1217 String get server_updated => 'Server updated';
1218
1219 @override
1220 String get server_added => 'Server added';
1221
1222 @override
1223 String get download_model_title => 'Download a Modell';
1224
1225 @override
1226 String get download_model_desc =>
1227 'Choose a model to download.\nIt will run locally on your device.';
1228
1229 @override
1230 String get on_device_android_only =>
1231 'On-device inference is currently available on Android only.';
1232
1233 @override
1234 String get total_ram => 'Total RAM';
1235
1236 @override
1237 String get available => 'Available';
1238
1239 @override
1240 String ram_min_required(String fileSize) {
1241 return '$fileSize GB RAM min';
1242 }
1243
1244 @override
1245 String download_progress(String percent, String speed) {
1246 return '$percent% • $speed';
1247 }
1248
1249 @override
1250 String eta_label(String eta) {
1251 return 'ETA: $eta';
1252 }
1253
1254 @override
1255 String paused_progress(String percent) {
1256 return 'Paused - $percent%';
1257 }
1258
1259 @override
1260 String ram_warning_body_download(String ram, String totalMemory) {
1261 return 'This model requires at least $ram GB RAM, but your device has $totalMemory. It may not run correctly or could cause the app to crash.';
1262 }
1263
1264 @override
1265 String ram_warning_body_load(String availableRAM, String ram) {
1266 return 'Your device has $availableRAM available RAM, but this model recommends at least $ram GB. Loading it might fail or cause instability.';
1267 }
1268
1269 @override
1270 String get choose_theme => 'Choose Theme';
1271
1272 @override
1273 String get choose_theme_desc =>
1274 'Personalize the app appearance. You can always change this later in settings.';
1275
1276 @override
1277 String get theme_card_system => 'System';
1278
1279 @override
1280 String get theme_card_system_sub => 'Matches your device settings';
1281
1282 @override
1283 String get theme_card_light => 'Light';
1284
1285 @override
1286 String get theme_card_light_sub => 'Clean and bright';
1287
1288 @override
1289 String get theme_card_dark => 'Dark';
1290
1291 @override
1292 String get theme_card_dark_sub => 'Easy on the eyes';
1293
1294 @override
1295 String get theme_card_claude => 'Claude';
1296
1297 @override
1298 String get theme_card_claude_sub => 'A warm, peach-tinted theme';
1299
1300 @override
1301 String get stay_updated => 'Stay Updated';
1302
1303 @override
1304 String get stay_updated_desc =>
1305 'Get notified when your AI models finish downloading or when long-running tasks complete.';
1306
1307 @override
1308 String get notification_benefit_downloads => 'Modell download progress';
1309
1310 @override
1311 String get notification_benefit_completions => 'Generation completions';
1312
1313 @override
1314 String get notification_benefit_background => 'Background tasks status';
1315
1316 @override
1317 String get allow_notifications => 'Allow Notifications';
1318
1319 @override
1320 String get servers_title => 'Servers';
1321
1322 @override
1323 String get no_servers_yet => 'No Servers Yet';
1324
1325 @override
1326 String get no_servers_desc =>
1327 'Hinzufügen your first server to start chatting with AI models.';
1328
1329 @override
1330 String get add_server => 'Server hinzufügen';
1331
1332 @override
1333 String switched_to_server(String name) {
1334 return 'Switched to $name';
1335 }
1336
1337 @override
1338 String get edit_server => 'Server bearbeiten';
1339
1340 @override
1341 String get add_server_title => 'Hinzufügen Server';
1342
1343 @override
1344 String get server_type_label => 'Server Type';
1345
1346 @override
1347 String get server_icon_label => 'Server Icon';
1348
1349 @override
1350 String get default_icon => 'Default icon';
1351
1352 @override
1353 String get server_type_lm_studio_display => 'LM Studio';
1354
1355 @override
1356 String get server_type_openai_display => 'OpenAI Compatible';
1357
1358 @override
1359 String get server_type_ollama_display => 'Ollama';
1360
1361 @override
1362 String get server_type_openrouter_display => 'OpenRouter';
1363
1364 @override
1365 String get server_type_requesty_display => 'Requesty';
1366
1367 @override
1368 String get server_type_on_device_display => 'On-Device';
1369
1370 @override
1371 String get server_address_openrouter => 'openrouter.ai';
1372
1373 @override
1374 String get server_address_requesty => 'router.requesty.ai';
1375
1376 @override
1377 String get server_address_on_device => 'Local inference';
1378
1379 @override
1380 String server_address_format(String host, String port) {
1381 return '$host:$port';
1382 }
1383
1384 @override
1385 String get default_badge => 'Default';
1386
1387 @override
1388 String get set_as_default => 'Set as Default';
1389
1390 @override
1391 String get select_icon => 'Select Icon';
1392
1393 @override
1394 String get select_icon_desc => 'Choose an icon for your server';
1395
1396 @override
1397 String get search_icons_hint => 'Suchen icons...';
1398
1399 @override
1400 String get server_icon_stack => 'Server Stack';
1401
1402 @override
1403 String get server_icon_stack2 => 'Server Stack 02';
1404
1405 @override
1406 String get server_icon_stack3 => 'Server Stack 03';
1407
1408 @override
1409 String get server_icon_cloud => 'Cloud';
1410
1411 @override
1412 String get server_icon_cloud_server => 'Cloud Server';
1413
1414 @override
1415 String get server_icon_mcp => 'MCP Server';
1416
1417 @override
1418 String get server_icon_database => 'Database';
1419
1420 @override
1421 String get server_icon_database1 => 'Database 01';
1422
1423 @override
1424 String get server_icon_database2 => 'Database 02';
1425
1426 @override
1427 String get server_icon_cpu => 'CPU';
1428
1429 @override
1430 String get server_icon_chip => 'Chip';
1431
1432 @override
1433 String get server_icon_chip2 => 'Chip 02';
1434
1435 @override
1436 String get server_icon_computer => 'Computer';
1437
1438 @override
1439 String get server_icon_laptop => 'Laptop';
1440
1441 @override
1442 String get server_icon_terminal => 'Computer Terminal';
1443
1444 @override
1445 String get server_icon_code => 'Code';
1446
1447 @override
1448 String get server_icon_ai_brain => 'AI Brain';
1449
1450 @override
1451 String get server_icon_ai_brain2 => 'AI Brain 02';
1452
1453 @override
1454 String get server_icon_ai_cloud => 'AI Cloud';
1455
1456 @override
1457 String get server_icon_ai_network => 'AI Network';
1458
1459 @override
1460 String get server_icon_ai_chat => 'AI Chat';
1461
1462 @override
1463 String get server_icon_cellular => 'Cellular Network';
1464
1465 @override
1466 String get server_icon_plug1 => 'Plug 01';
1467
1468 @override
1469 String get server_icon_plug2 => 'Plug 02';
1470
1471 @override
1472 String get server_icon_bot => 'Bot';
1473
1474 @override
1475 String get server_icon_bot2 => 'Bot 02';
1476
1477 @override
1478 String get server_icon_robotic => 'Robotic';
1479
1480 @override
1481 String get server_icon_rocket => 'Rocket';
1482
1483 @override
1484 String get server_icon_star => 'Star';
1485
1486 @override
1487 String get server_icon_settings1 => 'Einstellungen 01';
1488
1489 @override
1490 String get server_icon_settings2 => 'Einstellungen 02';
1491
1492 @override
1493 String get server_icon_home1 => 'Home 01';
1494
1495 @override
1496 String get server_icon_home2 => 'Home 02';
1497
1498 @override
1499 String get server_icon_folder1 => 'Folder 01';
1500
1501 @override
1502 String get server_icon_folder2 => 'Folder 02';
1503
1504 @override
1505 String get server_icon_file1 => 'File 01';
1506
1507 @override
1508 String get server_icon_lock => 'Lock';
1509
1510 @override
1511 String get server_icon_key => 'Key 01';
1512
1513 @override
1514 String get server_icon_link => 'Link 01';
1515
1516 @override
1517 String get server_icon_globe => 'Globe';
1518
1519 @override
1520 String get server_icon_api => 'API';
1521
1522 @override
1523 String get server_icon_arrow_right => 'Arrow Right 01';
1524
1525 @override
1526 String get server_icon_check => 'Check Circle';
1527
1528 @override
1529 String get server_icon_alert => 'Alert Circle';
1530
1531 @override
1532 String get server_icon_info => 'Info Circle';
1533
1534 @override
1535 String get server_icon_zap => 'Zap';
1536
1537 @override
1538 String get server_icon_cloud_upload => 'Cloud Upload';
1539
1540 @override
1541 String get server_icon_cloud_download => 'Cloud Download';
1542
1543 @override
1544 String get server_icon_refresh => 'Refresh';
1545
1546 @override
1547 String get server_icon_hard_drive => 'Hard Drive';
1548
1549 @override
1550 String get server_icon_drive => 'Drive';
1551
1552 @override
1553 String get personas_title => 'Personas';
1554
1555 @override
1556 String get persona_category_general => 'Allgemein';
1557
1558 @override
1559 String get persona_category_coding => 'Coding';
1560
1561 @override
1562 String get persona_category_education => 'Education';
1563
1564 @override
1565 String get persona_category_creative => 'Creative';
1566
1567 @override
1568 String get persona_builtin_section => 'BUILT-IN';
1569
1570 @override
1571 String get persona_my_section => 'MY PERSONAS';
1572
1573 @override
1574 String get clone_edit => 'Clone & Bearbeiten';
1575
1576 @override
1577 String get builtin_badge => 'Built-in';
1578
1579 @override
1580 String get no_personas_found => 'No personas found';
1581
1582 @override
1583 String get no_personas_desc =>
1584 'Create your first persona to customize AI behavior.';
1585
1586 @override
1587 String get edit_persona => 'Persona bearbeiten';
1588
1589 @override
1590 String get create_persona => 'Persona erstellen';
1591
1592 @override
1593 String get create_persona_button => 'Create';
1594
1595 @override
1596 String get emoji_label => 'Emoji';
1597
1598 @override
1599 String get name_label => 'Name';
1600
1601 @override
1602 String get my_persona_hint => 'My Persona';
1603
1604 @override
1605 String get category_label => 'Category';
1606
1607 @override
1608 String get description_optional => 'Description (optional)';
1609
1610 @override
1611 String get description_hint => 'What this persona does...';
1612
1613 @override
1614 String get system_prompt => 'System-Prompt';
1615
1616 @override
1617 String character_count_max(int currentLen) {
1618 return '$currentLen/4000';
1619 }
1620
1621 @override
1622 String get no_prompt_placeholder => 'No prompt yet...';
1623
1624 @override
1625 String get prompt_hint => 'You are a helpful assistant...';
1626
1627 @override
1628 String get prompt_required => 'System prompt is required';
1629
1630 @override
1631 String get prompt_max_chars => 'Max 4000 characters';
1632
1633 @override
1634 String get advanced_settings => 'Erweitert Einstellungen';
1635
1636 @override
1637 String get temperature_label => 'Temperature (0.0-2.0)';
1638
1639 @override
1640 String get top_p_label => 'Top P (0.0-1.0)';
1641
1642 @override
1643 String get temp_hint => '0.7';
1644
1645 @override
1646 String get top_p_hint => '0.9';
1647
1648 @override
1649 String get range_0_2 => '0.0-2.0';
1650
1651 @override
1652 String get range_0_1 => '0.0-1.0';
1653
1654 @override
1655 String get persona_updated => 'Persona updated';
1656
1657 @override
1658 String get persona_created => 'Persona created';
1659
1660 @override
1661 String get tts_models_title => 'Text To Speech Modelle';
1662
1663 @override
1664 String get always_available => 'Always available';
1665
1666 @override
1667 String get tts_system_desc =>
1668 'Uses your device\'s built-in text-to-speech engine.\nNo downloads required. Voice selection uses your device\'s system settings.';
1669
1670 @override
1671 String get downloading_status => 'Downloading...';
1672
1673 @override
1674 String tts_kitten_desc(String size) {
1675 return 'Lightning-fast neural TTS with 8 expressive voices.\nRequires $size download.';
1676 }
1677
1678 @override
1679 String tts_piper_desc(String size) {
1680 return 'Fast offline Piper voices with 2 expressive voices.\nRequires $size download per voice.';
1681 }
1682
1683 @override
1684 String engine_spec(String sizeMb, String ramMb, int voiceCount) {
1685 return '$sizeMb MB · $ramMb MB RAM · $voiceCount voices';
1686 }
1687
1688 @override
1689 String get on_device_models_title => 'On-Device Modelle';
1690
1691 @override
1692 String get settings_huggingface_token => 'Hugging Face Token (Optional)';
1693
1694 @override
1695 String get settings_huggingface_token_desc =>
1696 'Required only for gated models (e.g. Gemma). Get a token at huggingface.co/settings/tokens.';
1697
1698 @override
1699 String get settings_huggingface_token_set => 'Token saved';
1700
1701 @override
1702 String get settings_huggingface_token_cleared => 'Token cleared';
1703
1704 @override
1705 String get model_requires_huggingface_token =>
1706 'Requires a Hugging Face token';
1707
1708 @override
1709 String get model_missing_huggingface_token =>
1710 'This model is gated on Hugging Face. Hinzufügen a token in Einstellungen → On-Device Inference to download it.';
1711
1712 @override
1713 String get set_huggingface_token => 'Set token';
1714
1715 @override
1716 String get clear_huggingface_token => 'Clear';
1717
1718 @override
1719 String get edit_huggingface_token_dialog_title => 'Hugging Face Access Token';
1720
1721 @override
1722 String get huggingface_token_dialog_hint => 'hf_…';
1723
1724 @override
1725 String get server_type_ollama_desc =>
1726 'Lokal auf Ihrem Computer oder im Netzwerk ausgeführt';
1727
1728 @override
1729 String get server_type_on_device_desc =>
1730 'Modelle direkt auf diesem Gerät ausführen';
1731
1732 @override
1733 String get server_type_lm_studio_desc =>
1734 'Verbindung zur lokalen LM Studio Entwickler-API';
1735
1736 @override
1737 String get available_models => 'Available Modelle';
1738
1739 @override
1740 String get device_memory => 'Device Memory';
1741
1742 @override
1743 String get ram_usage => 'RAM Usage';
1744
1745 @override
1746 String get memory_healthy => 'Healthy';
1747
1748 @override
1749 String get memory_critical => 'Critical';
1750
1751 @override
1752 String get memory_low => 'Low';
1753
1754 @override
1755 String ram_used(String percent) {
1756 return '$percent% used';
1757 }
1758
1759 @override
1760 String get available_ram => 'Available RAM';
1761
1762 @override
1763 String get total_capacity => 'Total Capacity';
1764
1765 @override
1766 String get loaded_status => 'Loaded';
1767
1768 @override
1769 String get inference_backend => 'Inference Backend';
1770
1771 @override
1772 String get backend_ios_notice => 'Only CPU backend is available on iOS.';
1773
1774 @override
1775 String get backend_cpu_desc => 'Works on all devices. Most compatible.';
1776
1777 @override
1778 String get backend_gpu_desc =>
1779 'OpenCL acceleration. Faster on supported devices.';
1780
1781 @override
1782 String get backend_npu_desc =>
1783 'Vendor NPU (Qualcomm/MediaTek). Fastest inference.';
1784
1785 @override
1786 String get select_model_title => 'Select Modell';
1787
1788 @override
1789 String get refresh_models => 'Refresh models';
1790
1791 @override
1792 String get search_models_hint => 'Suchen models...';
1793
1794 @override
1795 String get no_server_connected => 'No server connected';
1796
1797 @override
1798 String get add_server_first =>
1799 'Hinzufügen a server first to see available models.';
1800
1801 @override
1802 String get failed_load_models => 'Fehlgeschlagen beim load models';
1803
1804 @override
1805 String get no_models_available => 'Keine Modelle verfügbar';
1806
1807 @override
1808 String no_models_match(String searchQuery) {
1809 return 'No models match \"$searchQuery\"';
1810 }
1811
1812 @override
1813 String model_load_failed(String error) {
1814 return 'Fehlgeschlagen beim load model: $error';
1815 }
1816
1817 @override
1818 String model_unloaded_ollama(String name) {
1819 return 'Unload requested for $name. If Ollama is reachable, the model is released immediately.';
1820 }
1821
1822 @override
1823 String model_unloaded_success(String name) {
1824 return '$name unloaded successfully';
1825 }
1826
1827 @override
1828 String model_unload_failed(String error) {
1829 return 'Fehlgeschlagen beim unload model: $error';
1830 }
1831
1832 @override
1833 String get unload_from_server => 'Unload from server';
1834
1835 @override
1836 String context_chip(String ctx) {
1837 return '$ctx ctx';
1838 }
1839
1840 @override
1841 String get unload_all_models => 'Unload all';
1842
1843 @override
1844 String loaded_models_count(int count) {
1845 return '$count loaded';
1846 }
1847
1848 @override
1849 String get all_models_unloaded => 'All models unloaded';
1850
1851 @override
1852 String get branch_chat => 'Branch chat';
1853
1854 @override
1855 String get branch_chat_desc => 'Start a new conversation from this message';
1856
1857 @override
1858 String get edit_assistant_message_desc =>
1859 'Bearbeiten the assistant response text.';
1860
1861 @override
1862 String switch_to_model(String modelName, Object model) {
1863 return 'Switch to $modelName';
1864 }
1865
1866 @override
1867 String download_notification_title(String modelName) {
1868 return 'Downloading $modelName...';
1869 }
1870
1871 @override
1872 String get download_complete_notification => 'Download abgeschlossen!';
1873
1874 @override
1875 String download_complete_body(String modelName) {
1876 return '$modelName has been downloaded successfully.';
1877 }
1878
1879 @override
1880 String download_failed_notification(String error) {
1881 return 'Download fehlgeschlagen: $error';
1882 }
1883
1884 @override
1885 String download_failed_body(String modelName) {
1886 return 'Fehlgeschlagen beim download $modelName.';
1887 }
1888
1889 @override
1890 String get engine_name_system => 'System TTS';
1891
1892 @override
1893 String get engine_tagline_system => 'Built-in device engine';
1894
1895 @override
1896 String get engine_name_kitten => 'Kitten TTS';
1897
1898 @override
1899 String get engine_tagline_kitten => 'High-speed neural TTS';
1900
1901 @override
1902 String get engine_name_sherpa => 'Sherpa ONNX VITS';
1903
1904 @override
1905 String get engine_tagline_sherpa => 'Offline Piper voices';
1906
1907 @override
1908 String get voice_jasper => 'Jasper';
1909
1910 @override
1911 String get voice_bella => 'Bella';
1912
1913 @override
1914 String get voice_bruno => 'Bruno';
1915
1916 @override
1917 String get voice_luna => 'Luna';
1918
1919 @override
1920 String get voice_hugo => 'Hugo';
1921
1922 @override
1923 String get voice_rosie => 'Rosie';
1924
1925 @override
1926 String get voice_leo => 'Leo';
1927
1928 @override
1929 String get voice_kiki => 'Kiki';
1930
1931 @override
1932 String get voice_lessac => 'Lessac (US)';
1933
1934 @override
1935 String get voice_ryan => 'Ryan (US)';
1936
1937 @override
1938 String get model_qwen_3 => 'Qwen 3 0.6B';
1939
1940 @override
1941 String get model_qwen_3_desc =>
1942 'Smallest general-purpose chat model. Fast responses, low memory usage.';
1943
1944 @override
1945 String get model_license_apache => 'Apache-2.0';
1946
1947 @override
1948 String get model_qwen_25 => 'Qwen 2.5 1.5B Instruct';
1949
1950 @override
1951 String get model_qwen_25_desc =>
1952 'Balanced quality and size. Good for general conversation.';
1953
1954 @override
1955 String get model_deepseek => 'DeepSeek R1 Distill Qwen 1.5B';
1956
1957 @override
1958 String get model_deepseek_desc =>
1959 'Reasoning and chain-of-thought model. Best for logical tasks.';
1960
1961 @override
1962 String get model_license_mit => 'MIT';
1963
1964 @override
1965 String get model_gemma => 'Gemma 4 E2B Instruct';
1966
1967 @override
1968 String get model_gemma_desc =>
1969 'Google flagship model. Highest quality, requires more RAM.';
1970
1971 @override
1972 String export_header(String date) {
1973 return '*Exported from LocalMind — $date*';
1974 }
1975
1976 @override
1977 String get export_role_user => '## 👤 User';
1978
1979 @override
1980 String get export_role_assistant => '## 🤖 Assistant';
1981
1982 @override
1983 String get export_role_system => '## ⚙️ System';
1984
1985 @override
1986 String get export_role_tool => '## 🔧 Tool';
1987
1988 @override
1989 String get export_text_user => '[USER]';
1990
1991 @override
1992 String get export_text_assistant => '[ASSISTANT]';
1993
1994 @override
1995 String get export_text_system => '[SYSTEM]';
1996
1997 @override
1998 String get export_text_tool => '[TOOL]';
1999
2000 @override
2001 String get export_label_user => 'USER';
2002
2003 @override
2004 String get export_label_assistant => 'ASSISTANT';
2005
2006 @override
2007 String get export_label_system => 'SYSTEM';
2008
2009 @override
2010 String get export_label_tool => 'TOOL';
2011
2012 @override
2013 String get select_model_hint => 'Wählen Sie ein Modell to start chatting';
2014
2015 @override
2016 String get test_notification_title => 'Test notification';
2017
2018 @override
2019 String get test_notification_body =>
2020 'This is a test notification for model download progress.';
2021
2022 @override
2023 String get tts_supports_background =>
2024 'Supports background playback as native audio';
2025
2026 @override
2027 String get tts_other_services_background_note =>
2028 'Note: The other TTS services support background playback as native audio.';
2029
2030 @override
2031 String get gguf_imported_models_title => 'Imported GGUF models';
2032
2033 @override
2034 String get gguf_imported_models_empty_subtitle =>
2035 'Import a GGUF from your device or add one from Hugging Face. Imported models run locally with llama.cpp.';
2036
2037 @override
2038 String get gguf_imported_models_ready =>
2039 'imported models ready for local inference.';
2040
2041 @override
2042 String get gguf_curated_models_subtitle =>
2043 'Curated on-device models you can download and manage inside LocalMind.';
2044
2045 @override
2046 String get gguf_only_supported =>
2047 'Only GGUF models are supported for this import.';
2048
2049 @override
2050 String get gguf_imported_from_local_file => 'imported from local file.';
2051
2052 @override
2053 String get gguf_import_failed => 'Fehlgeschlagen beim import GGUF model';
2054
2055 @override
2056 String get gguf_imported_from_huggingface => 'imported from Hugging Face.';
2057
2058 @override
2059 String get gguf_import_canceled => 'GGUF import canceled.';
2060
2061 @override
2062 String get gguf_enter_huggingface_url => 'Enter a Hugging Face GGUF URL.';
2063
2064 @override
2065 String get gguf_only_official_huggingface_urls =>
2066 'Only official Hugging Face GGUF URLs are supported.';
2067
2068 @override
2069 String get gguf_use_https_url =>
2070 'Use an HTTPS Hugging Face URL for GGUF import.';
2071
2072 @override
2073 String get gguf_url_must_point_to_file =>
2074 'The Hugging Face URL must point directly to a .gguf file.';
2075
2076 @override
2077 String get gguf_unable_to_detect_file_name =>
2078 'Unable to determine the GGUF file name.';
2079
2080 @override
2081 String get gguf_download_empty =>
2082 'The downloaded GGUF file was empty or missing.';
2083
2084 @override
2085 String get gguf_selected_file_missing =>
2086 'Selected model file does not exist.';
2087
2088 @override
2089 String get gguf_import_action => 'Import GGUF';
2090
2091 @override
2092 String get gguf_overview_title => 'Bring your own GGUF models';
2093
2094 @override
2095 String get gguf_overview_subtitle =>
2096 'Import a .gguf from local storage or download one straight from Hugging Face. Imported models stay on this device and load with llama.cpp.';
2097
2098 @override
2099 String get gguf_imported_count_label => 'imported';
2100
2101 @override
2102 String get gguf_local_files_label => 'local files';
2103
2104 @override
2105 String get gguf_huggingface_label => 'Hugging Face';
2106
2107 @override
2108 String get gguf_import_local_title => 'Import local GGUF';
2109
2110 @override
2111 String get gguf_import_local_subtitle => 'Copy a .gguf file from this device';
2112
2113 @override
2114 String get gguf_import_huggingface_title => 'Import from Hugging Face';
2115
2116 @override
2117 String get gguf_import_huggingface_subtitle =>
2118 'Paste a GGUF URL or repo path';
2119
2120 @override
2121 String get gguf_no_imported_title => 'No imported GGUF models yet';
2122
2123 @override
2124 String get gguf_no_imported_subtitle =>
2125 '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.';
2126
2127 @override
2128 String get gguf_import_huggingface_dialog_title =>
2129 'Import GGUF from Hugging Face';
2130
2131 @override
2132 String get gguf_import_huggingface_dialog_subtitle =>
2133 'Paste a direct GGUF URL or a Hugging Face repo path like `owner/repo/blob/main/model.gguf`. Blob links are converted automatically.';
2134
2135 @override
2136 String get gguf_url_or_repo_path => 'GGUF URL or repo path';
2137
2138 @override
2139 String get paste => 'Paste';
2140
2141 @override
2142 String get gguf_browse => 'Browse GGUFs';
2143
2144 @override
2145 String get gguf_huggingface_token_ready => 'Hugging Face token ready';
2146
2147 @override
2148 String get gguf_huggingface_token_optional =>
2149 'Token optional but recommended';
2150
2151 @override
2152 String get gguf_huggingface_token_ready_desc =>
2153 'Your saved token will be used automatically for gated or private repositories.';
2154
2155 @override
2156 String get gguf_huggingface_token_optional_desc =>
2157 'Requires a Hugging Face token. Hinzufügen one in Einstellungen if this GGUF is gated or private.';
2158
2159 @override
2160 String get gguf_downloading => 'Downloading GGUF';
2161
2162 @override
2163 String get gguf_preparing => 'Preparing';
2164
2165 @override
2166 String get gguf_preparing_download => 'Preparing download...';
2167
2168 @override
2169 String get gguf_cancel_import => 'Abbrechen import';
2170
2171 @override
2172 String get clipboard_empty => 'Clipboard is empty.';
2173
2174 @override
2175 String get could_not_open_huggingface => 'Could not open Hugging Face.';
2176
2177 @override
2178 String get gguf_paste_url_error =>
2179 'Paste a Hugging Face GGUF URL or repo path.';
2180
2181 @override
2182 String get gguf_blob_link => 'Blob link';
2183
2184 @override
2185 String get gguf_repository_label => 'Repository';
2186
2187 @override
2188 String get gguf_detected_path_label => 'Detected path';
2189
2190 @override
2191 String get gguf_imported_section_label => 'Imported GGUF';
2192
2193 @override
2194 String get gguf_already_available => 'Already available on this device';
2195
2196 @override
2197 String get gguf_curated_models_short => 'Curated on-device models';
2198
2199 @override
2200 String get gguf_vision_projector => 'Vision Projector';
2201
2202 @override
2203 String get gguf_attach_projector => 'Attach Vision Projector';
2204
2205 @override
2206 String get gguf_change_projector => 'Change Vision Projector';
2207
2208 @override
2209 String get gguf_remove_projector => 'Remove Projector';
2210
2211 @override
2212 String get gguf_projector_attached =>
2213 'Vision projector attached successfully';
2214
2215 @override
2216 String get gguf_projector_removed => 'Vision projector removed';
2217
2218 @override
2219 String gguf_projector_auto_detected(String name) {
2220 return 'Auto-detected and linked vision projector: $name';
2221 }
2222
2223 @override
2224 String get gguf_is_projector_file =>
2225 'The selected file is a vision projector (mmproj), not a standalone model.';
2226
2227 @override
2228 String get gguf_projector_url_label =>
2229 'Vision Projector URL (optional mmproj)';
2230
2231 @override
2232 String get gguf_projector_url_hint =>
2233 'https://huggingface.co/.../mmproj-...gguf';
2234
2235 @override
2236 String get gguf_vision_not_supported_error =>
2237 'The active model does not support image attachments. Please attach a vision projector (mmproj) or select a vision-supported model.';
2238
2239 @override
2240 String get execute_tool_title => 'Execute Tool';
2241
2242 @override
2243 String get execute_tool_request_desc =>
2244 'The model is requesting to execute the following tool:';
2245
2246 @override
2247 String get reject => 'Reject';
2248
2249 @override
2250 String get approve => 'Approve';
2251
2252 @override
2253 String get server_type_help =>
2254 'Pick the provider before filling connection details.';
2255
2256 @override
2257 String get server_identity_title => 'Identity';
2258
2259 @override
2260 String get server_identity_desc =>
2261 'Name this server and choose how it appears in the list.';
2262
2263 @override
2264 String get server_connection_title => 'Connection';
2265
2266 @override
2267 String get server_connection_desc =>
2268 'Use the address and port exposed by your server.';
2269
2270 @override
2271 String get server_authentication_title => 'Authentication';
2272
2273 @override
2274 String get server_authentication_required_desc =>
2275 'OpenRouter requires an API key before testing.';
2276
2277 @override
2278 String get server_authentication_required_desc_requesty =>
2279 'Requesty requires an API key before testing.';
2280
2281 @override
2282 String get server_authentication_optional_desc =>
2283 'Leave the API key empty if this server does not require one.';
2284
2285 @override
2286 String get mcp_tools_title => 'MCP Tools';
2287
2288 @override
2289 String get available_tools => 'Available tools';
2290
2291 @override
2292 String get unable_load_tools => 'Unable to load tools';
2293
2294 @override
2295 String get no_tools_registered => 'No tools registered';
2296
2297 @override
2298 String get no_tools_registered_desc =>
2299 'Enable the example MCP server or add MCP integrations from chat settings.';
2300
2301 @override
2302 String get example_mcp_server_title => 'Example MCP server';
2303
2304 @override
2305 String get example_mcp_server_desc =>
2306 'Registers example.echo and example.word_count through the same MCP tool provider used by external servers.';
2307
2308 @override
2309 String get disable_example_server => 'Disable example server';
2310
2311 @override
2312 String get enable_example_server => 'Enable example server';
2313
2314 @override
2315 String get built_in_label => 'Built-in';
2316
2317 @override
2318 String get highlights_label => 'Highlights';
2319
2320 @override
2321 String get built_with_label => 'Built with';
2322
2323 @override
2324 String get local_label => 'Local';
2325
2326 @override
2327 String get gguf_format_label => 'GGUF';
2328
2329 @override
2330 String get tool_status_requested => 'Requested';
2331
2332 @override
2333 String get tool_status_approved => 'Approved';
2334
2335 @override
2336 String get tool_status_rejected => 'Rejected';
2337
2338 @override
2339 String get tool_status_running => 'Running';
2340
2341 @override
2342 String get tool_status_done => 'Done';
2343
2344 @override
2345 String get tool_status_failed => 'Fehlgeschlagen';
2346
2347 @override
2348 String get model_favorite_toggle => 'Toggle favorite';
2349
2350 @override
2351 String get model_set_default => 'Set as default model';
2352
2353 @override
2354 String get model_clear_default => 'Entfernen as default model';
2355
2356 @override
2357 String get model_default_badge => 'Default';
2358
2359 @override
2360 String get model_note_label => 'Note';
2361
2362 @override
2363 String get model_note_hint => 'Hinzufügen a note about this model…';
2364
2365 @override
2366 String get unload_models_before_load =>
2367 'Unload all models before loading a new one';
2368
2369 @override
2370 String get temp_chat_keyboard_incognito =>
2371 'Incognito keyboard in temporary chat';
2372
2373 @override
2374 String get temp_chat_keyboard_incognito_desc =>
2375 'Disables keyboard learning and suggestions in temporary chats (e.g. SwiftKey incognito).';
2376
2377 @override
2378 String get resume_last_chat => 'Resume last chat on launch';
2379
2380 @override
2381 String get resume_last_chat_desc =>
2382 'Restore your last open conversation when reopening the app.';
2383
2384 @override
2385 String get export_all_data => 'Export all data';
2386
2387 @override
2388 String get import_all_data => 'Import all data';
2389
2390 @override
2391 String get export_data_success => 'Backup exported successfully';
2392
2393 @override
2394 String get import_data_success => 'Backup imported successfully';
2395
2396 @override
2397 String import_data_failed(String error) {
2398 return 'Fehlgeschlagen beim import backup: $error';
2399 }
2400
2401 @override
2402 String get import_data_confirm =>
2403 'Import conversations and custom personas from this backup? Existing items with the same IDs will be updated.';
2404
2405 @override
2406 String get import_settings_confirm =>
2407 'Replace current settings with the imported backup?';
2408
2409 @override
2410 String get export_conversations => 'Export conversations';
2411
2412 @override
2413 String get import_conversations => 'Import conversations';
2414
2415 @override
2416 String get export_personas => 'Export personas';
2417
2418 @override
2419 String get import_personas => 'Import personas';
2420
2421 @override
2422 String get export_settings => 'Export settings';
2423
2424 @override
2425 String get import_settings => 'Import settings';
2426
2427 @override
2428 String get export_all_zip => 'Export all (ZIP)';
2429
2430 @override
2431 String get import_all_zip => 'Import all (ZIP)';
2432
2433 @override
2434 String get duplicate_chat => 'Duplicate chat';
2435
2436 @override
2437 String get duplicate_chat_success => 'Chat duplicated';
2438
2439 @override
2440 String get move_to_folder => 'Move to folder';
2441
2442 @override
2443 String get remove_from_folder => 'Entfernen from folder';
2444
2445 @override
2446 String get create_folder => 'Create folder';
2447
2448 @override
2449 String get new_folder => 'New folder';
2450
2451 @override
2452 String get folder_name_hint => 'Folder name';
2453
2454 @override
2455 String get all_chats => 'All';
2456
2457 @override
2458 String get unfiled_chats => 'Unfiled';
2459
2460 @override
2461 String get create => 'Create';
2462
2463 @override
2464 String get server_path_prefix_label => 'API path prefix';
2465
2466 @override
2467 String get server_path_prefix_hint => '/your-secret-token';
2468
2469 @override
2470 String get search_message_contents => 'Suchen message contents';
2471
2472 @override
2473 String get message_search_results => 'Message matches';
2474
2475 @override
2476 String get saved_messages_title => 'Saved Messages';
2477
2478 @override
2479 String get nav_saved_messages => 'Saved Messages';
2480
2481 @override
2482 String get saved_messages_empty =>
2483 'No saved messages yet. Bookmark a message from its options menu.';
2484
2485 @override
2486 String get save_message => 'Nachricht speichern';
2487
2488 @override
2489 String get message_saved => 'Message saved';
2490
2491 @override
2492 String token_count(int count) {
2493 return '$count tokens';
2494 }
2495
2496 @override
2497 String estimated_token_count(int count) {
2498 return '~$count tokens (estimated)';
2499 }
2500
2501 @override
2502 String get test_tts_section_title => 'Test voice';
2503
2504 @override
2505 String get test_tts_hint => 'Enter text to hear the current TTS engine…';
2506
2507 @override
2508 String get test_speak_button => 'Speak';
2509
2510 @override
2511 String get scroll_to_bottom => 'Scroll to bottom';
2512
2513 @override
2514 String get generate_ai_response => 'Generate AI response';
2515
2516 @override
2517 String get no_response => 'No response';
2518
2519 @override
2520 String get export => 'Export';
2521
2522 @override
2523 String get import => 'Import';
2524
2525 @override
2526 String get conversations_label => 'Conversations';
2527
2528 @override
2529 String get personas_label => 'Personas';
2530
2531 @override
2532 String get settings_label => 'Einstellungen';
2533
2534 @override
2535 String get export_conversation => 'Export conversation';
2536
2537 @override
2538 String get tts_process_markdown => 'Process markdown for speech';
2539
2540 @override
2541 String get tts_process_markdown_desc =>
2542 'Strip formatting like **bold** before reading aloud';
2543
2544 @override
2545 String get tts_skip_seconds => 'Skip interval';
2546
2547 @override
2548 String get tts_skip_seconds_desc =>
2549 'Forward and rewind jump size during playback';
2550
2551 @override
2552 String tts_skip_seconds_value(int seconds) {
2553 return '${seconds}s';
2554 }
2555
2556 @override
2557 String get preview_system_prompts => 'Preview system prompts';
2558
2559 @override
2560 String get welcome_message_1 => 'What can I help you with today?';
2561
2562 @override
2563 String get welcome_message_2 => 'Ask me anything — I\'m ready when you are.';
2564
2565 @override
2566 String get welcome_message_3 =>
2567 'Your data is processed locally and never leaves your device.';
2568
2569 @override
2570 String get welcome_message_4 => 'Need ideas? Try one of the quick prompts.';
2571
2572 @override
2573 String get temporary_chat => 'Temporary chat';
2574
2575 @override
2576 String get temporary_chat_desc => 'Chats aren\'t saved to history.';
2577
2578 @override
2579 String get temporary_chat_banner => 'Temporary chat — not saved to history';
2580
2581 @override
2582 String get temporary_chat_save_warning_title =>
2583 'Speichern message in temporary chat?';
2584
2585 @override
2586 String get temporary_chat_save_warning_body =>
2587 'This chat is temporary and hidden from history. The saved message will still appear in Saved Messages.';
2588
2589 @override
2590 String get save_to_history => 'Speichern to history';
2591
2592 @override
2593 String get share_conversation => 'Share conversation';
2594
2595 @override
2596 String get download_tts_audio => 'Download audio';
2597
2598 @override
2599 String get tts_download_unavailable =>
2600 'Download is only available for Piper and Kitten TTS';
2601
2602 @override
2603 String get tts_download_no_audio => 'No audio available to download yet';
2604
2605 @override
2606 String get tts_download_success => 'Audio saved';
2607
2608 @override
2609 String get return_to_chat => 'Return to chat';
2610
2611 @override
2612 String get return_to_temp_chat => 'Return to temporary chat';
2613
2614 @override
2615 String get insert_saved_message => 'Insert saved message';
2616
2617 @override
2618 String get insert_saved_message_desc =>
2619 'Choose a saved message to add to your input';
2620
2621 @override
2622 String get model_info => 'Modell info';
2623
2624 @override
2625 String get model_name => 'Modell name';
2626
2627 @override
2628 String get model_identifier => 'Identifier';
2629
2630 @override
2631 String get model_capabilities => 'Capabilities';
2632
2633 @override
2634 String get model_api_pricing => 'API pricing (per 1M tokens)';
2635
2636 @override
2637 String get not_available => 'Not available';
2638
2639 @override
2640 String get save_message_folders => 'Speichern message';
2641
2642 @override
2643 String get remove_from_saved => 'Entfernen from saved';
2644
2645 @override
2646 String get message_already_saved => 'Saved';
2647
2648 @override
2649 String get stream_ttft => 'Time to first token';
2650
2651 @override
2652 String get stream_tokens_per_sec => 'Tokens per second';
2653
2654 @override
2655 String get stream_stop_reason => 'Stop reason';
2656
2657 @override
2658 String get stream_input_tokens => 'Input tokens';
2659
2660 @override
2661 String get stream_output_tokens => 'Output tokens';
2662
2663 @override
2664 String get stream_generation_time => 'Generation time';
2665
2666 @override
2667 String get attach_image => 'Photos';
2668
2669 @override
2670 String get attach_text_document => 'Documents';
2671
2672 @override
2673 String get attach_shortcut_images => 'Photos';
2674
2675 @override
2676 String get attach_shortcut_documents => 'Files';
2677
2678 @override
2679 String get attach_shortcut_saved => 'Saved';
2680
2681 @override
2682 String get add_attachment => 'Hinzufügen attachment';
2683
2684 @override
2685 String get add_to_chat => 'Hinzufügen to chat';
2686
2687 @override
2688 String get choose_what_to_attach => 'What would you like to add?';
2689
2690 @override
2691 String get choose_attachment_subtitle =>
2692 'Pick a source to attach to your message';
2693
2694 @override
2695 String get photo_permission_denied =>
2696 'Photo access is required to attach images';
2697
2698 @override
2699 String get select_model_prompt => 'Select model';
2700
2701 @override
2702 String get characters_label => 'Characters';
2703
2704 @override
2705 String get exit_temporary_chat_title => 'Exit temporary chat?';
2706
2707 @override
2708 String get exit_temporary_chat_body =>
2709 'This will discard the current temporary chat and return to a new chat.';
2710
2711 @override
2712 String get saved_message_temp_snap_unavailable =>
2713 'This message was saved from a temporary chat and can\'t be opened in its original conversation.';
2714
2715 @override
2716 String get filter_title => 'Filter';
2717
2718 @override
2719 String get filter_pinned => 'Pinned';
2720
2721 @override
2722 String get filter_archived => 'Archived';
2723
2724 @override
2725 String get filter_temp_chats => 'Temporary chats';
2726
2727 @override
2728 String get filter_user_messages => 'User messages';
2729
2730 @override
2731 String get filter_assistant_messages => 'Assistant messages';
2732
2733 @override
2734 String get archive_chat => 'Archive';
2735
2736 @override
2737 String get unarchive_chat => 'Unarchive';
2738
2739 @override
2740 String conversation_message_count(int count) {
2741 String _temp0 = intl.Intl.pluralLogic(
2742 count,
2743 locale: localeName,
2744 other: '$count messages',
2745 one: '1 message',
2746 );
2747 return '$_temp0';
2748 }
2749
2750 @override
2751 String conversation_character_count(int count) {
2752 return '$count chars';
2753 }
2754
2755 @override
2756 String get generate_title_with_ai => 'Generate with AI';
2757
2758 @override
2759 String get generating_title => 'Generating...';
2760
2761 @override
2762 String get generate_title_failed => 'Could not generate a title';
2763
2764 @override
2765 String get lm_studio_model_browser_title => 'Browse models';
2766
2767 @override
2768 String get lm_studio_model_search_hint => 'Suchen models by name or author…';
2769
2770 @override
2771 String get lm_studio_staff_picks => 'Staff picks';
2772
2773 @override
2774 String get lm_studio_community_models => 'Community models';
2775
2776 @override
2777 String get lm_studio_no_models => 'Keine Modelle gefunden';
2778
2779 @override
2780 String lm_studio_models_count(int count) {
2781 return '$count models';
2782 }
2783
2784 @override
2785 String get lm_studio_browse_models => 'Browse & download';
2786
2787 @override
2788 String get lm_studio_model_search => 'LMS Modell Suchen';
2789
2790 @override
2791 String get lm_studio_downloads_title => 'Downloads';
2792
2793 @override
2794 String get lm_studio_choose_quant => 'Choose a download option';
2795
2796 @override
2797 String get lm_studio_use_default_quant => 'Use default';
2798
2799 @override
2800 String get lm_studio_recommended => 'Recommended';
2801
2802 @override
2803 String get lm_studio_clear_downloads => 'Clear finished';
2804
2805 @override
2806 String get lm_studio_no_downloads => 'No downloads yet';
2807
2808 @override
2809 String get lm_studio_downloads_disclaimer =>
2810 'Downloads run on the LM Studio host. Pausing, stopping, and deleting models must be done on that computer — not from this app.';
2811
2812 @override
2813 String get lm_studio_staff_pick => 'Staff pick';
2814
2815 @override
2816 String get lm_studio_params => 'PARAMS';
2817
2818 @override
2819 String get lm_studio_arch => 'ARCH';
2820
2821 @override
2822 String get lm_studio_domain => 'DOMAIN';
2823
2824 @override
2825 String get lm_studio_format => 'FORMAT';
2826
2827 @override
2828 String get lm_studio_vision => 'Vision';
2829
2830 @override
2831 String get lm_studio_tool_use => 'Tool use';
2832
2833 @override
2834 String get lm_studio_reasoning => 'Reasoning';
2835
2836 @override
2837 String get openrouter_pricing_free => 'Free';
2838
2839 @override
2840 String openrouter_pricing_tooltip(String input, String output) {
2841 return 'Input $input / Output $output per 1M tokens';
2842 }
2843
2844 @override
2845 String get lm_studio_download_options => 'Download options';
2846
2847 @override
2848 String get lm_studio_download => 'Download';
2849
2850 @override
2851 String lm_studio_download_size(String size) {
2852 return 'Download $size';
2853 }
2854
2855 @override
2856 String lm_studio_downloading_percent(int percent) {
2857 return 'Downloading $percent%';
2858 }
2859
2860 @override
2861 String get lm_studio_readme_unavailable =>
2862 'README not available for this model.';
2863
2864 @override
2865 String get lm_studio_full_gpu_offload => 'Full GPU offload possible';
2866
2867 @override
2868 String get lm_studio_partial_gpu_offload => 'Partial GPU offload possible';
2869
2870 @override
2871 String get lm_studio_likely_too_large => 'Likely too large';
2872
2873 @override
2874 String get lm_studio_available_ram_gb => 'Available RAM (GB, optional)';
2875
2876 @override
2877 String get lm_studio_available_vram_gb => 'Available VRAM (GB, optional)';
2878
2879 @override
2880 String get lm_studio_memory_settings_title => 'Memory for recommendations';
2881
2882 @override
2883 String get lm_studio_memory_settings_desc =>
2884 'Used to estimate whether models fit on your machine in the model browser.';
2885
2886 @override
2887 String get think_button_label => 'Think';
2888
2889 @override
2890 String get thinking_mode_title => 'Thinking mode';
2891
2892 @override
2893 String get reasoning_effort_low => 'Low';
2894
2895 @override
2896 String get reasoning_effort_medium => 'Medium';
2897
2898 @override
2899 String get reasoning_effort_high => 'High';
2900
2901 @override
2902 String get reasoning_effort_minimal => 'Minimal';
2903
2904 @override
2905 String get reasoning_effort_xhigh => 'X-High';
2906
2907 @override
2908 String get reasoning_effort_max => 'Max';
2909
2910 @override
2911 String get reasoning_effort_off => 'Off';
2912
2913 @override
2914 String get could_not_read_file => 'Could not read file';
2915
2916 @override
2917 String get server_offline => 'Server Offline';
2918
2919 @override
2920 String get could_not_establish_connection =>
2921 'Could not establish a connection to the server. Please check if your server is running and the host/port settings are correct.';
2922
2923 @override
2924 String get retry_connection => 'Retry Connection';
2925
2926 @override
2927 String get tokens_label => 'Tokens';
2928
2929 @override
2930 String get enter_context_length => 'Enter context length...';
2931
2932 @override
2933 String get openrouter_disclosure =>
2934 'By connecting this provider, your chat messages and inputs will be sent to their servers. LocalMind does not track or store your conversations.';
2935
2936 @override
2937 String get requesty_disclosure =>
2938 'By connecting this provider, your chat messages and inputs will be sent to their servers. LocalMind does not track or store your conversations.';
2939
2940 @override
2941 String get welcome_message_cloud =>
2942 'Your messages are sent to your connected provider.';
2943
2944 @override
2945 String get privacy_policy => 'Privacy Policy';
2946
2947 @override
2948 String get cloud_sync => 'S3 Cloud Sync';
2949
2950 @override
2951 String get cloud_sync_description =>
2952 'End-to-end encrypted sync to your own S3-compatible server';
2953
2954 @override
2955 String get cloud_sync_endpoint => 'Endpoint URL';
2956
2957 @override
2958 String get cloud_sync_bucket => 'Bucket';
2959
2960 @override
2961 String get cloud_sync_region => 'Region';
2962
2963 @override
2964 String get cloud_sync_prefix => 'Prefix';
2965
2966 @override
2967 String get cloud_sync_access_key => 'Access key ID';
2968
2969 @override
2970 String get cloud_sync_secret_key => 'Secret access key';
2971
2972 @override
2973 String get cloud_sync_session_token => 'Session token (optional)';
2974
2975 @override
2976 String get cloud_sync_passphrase => 'Encryption passphrase';
2977
2978 @override
2979 String get cloud_sync_confirm_passphrase => 'Confirm passphrase';
2980
2981 @override
2982 String get cloud_sync_path_style => 'Use path-style addressing';
2983
2984 @override
2985 String get cloud_sync_allow_http => 'Allow insecure HTTP';
2986
2987 @override
2988 String get cloud_sync_http_warning =>
2989 'HTTP exposes request metadata and credentials to the network. Use it only for a trusted local S3 server.';
2990
2991 @override
2992 String get cloud_sync_test => 'Test connection';
2993
2994 @override
2995 String get cloud_sync_enable => 'Enable encrypted sync';
2996
2997 @override
2998 String get cloud_sync_now => 'Sync now';
2999
3000 @override
3001 String get cloud_sync_disconnect => 'Disconnect this device';
3002
3003 @override
3004 String get cloud_sync_last_synced => 'Last synced';
3005
3006 @override
3007 String get cloud_sync_never => 'Never';
3008
3009 @override
3010 String get cloud_sync_conflicts => 'Conflicts preserved';
3011
3012 @override
3013 String get cloud_sync_passphrase_mismatch => 'Passphrases do not match';
3014
3015 @override
3016 String get crash_report_title => 'Something went wrong';
3017
3018 @override
3019 String get crash_report_stack_trace => 'Stack trace';
3020
3021 @override
3022 String get crash_report_tap_to_expand => 'Tap to expand';
3023
3024 @override
3025 String get crash_report_button => 'Report this crash';
3026
3027 @override
3028 String get crash_try_again => 'Try again';
3029
3030 @override
3031 String get crash_report_empty_stack => '<empty>';
3032
3033 @override
3034 String get crash_report_disclaimer =>
3035 'Reporting opens GitHub with diagnostics prefilled. You stay in control — nothing is submitted automatically. Please review and remove any sensitive content before submitting.';
3036
3037 @override
3038 String get crash_report_copied => 'In Zwischenablage kopiert';
3039
3040 @override
3041 String get report_a_problem => 'Problem melden';
3042
3043 @override
3044 String get rename_folder => 'Ordner umbenennen';
3045
3046 @override
3047 String get delete_folder => 'Ordner löschen';
3048
3049 @override
3050 String get delete_folder_title => 'Ordner löschen?';
3051
3052 @override
3053 String delete_folder_body(String name) {
3054 return 'Möchten Sie den Ordner \"$name\" wirklich löschen? Enthaltene Unterhaltungen oder gespeicherte Nachrichten werden nach \"Unsortiert\" verschoben. Dies kann nicht rückgängig gemacht werden.';
3055 }
3056
3057 @override
3058 String get folder_name_required => 'Bitte geben Sie einen Ordnernamen ein';
3059
3060 @override
3061 String get model_required_toast => 'Sie müssen zuerst ein Modell auswählen';
3062
3063 @override
3064 String get settings_concise_voice_responses =>
3065 'Prägnante Sprachmodus-Antworten';
3066
3067 @override
3068 String get settings_concise_voice_responses_desc =>
3069 'Halten Sie LLM-Antworten im Sprachmodus kurz (1 kurzer Absatz) und stellen Sie Nachfragen.';
3070
3071 @override
3072 String get s3_connection_succeeded => 'S3-Verbindung erfolgreich.';
3073
3074 @override
3075 String failed_to_open_url(String error) {
3076 return 'URL konnte nicht geöffnet werden: $error';
3077 }
3078
3079 @override
3080 String failed_to_copy(String error) {
3081 return 'Kopieren fehlgeschlagen: $error';
3082 }
3083
3084 @override
3085 String get file_explorer_not_found =>
3086 'No file explorer found. Please make sure a file manager app is installed and enabled on your device.';
3087
3088 @override
3089 String export_data_failed(String error) {
3090 return 'Failed to export backup: $error';
3091 }
3092
3093 @override
3094 String file_pick_failed(String error) {
3095 return 'Failed to select file: $error';
3096 }
3097
3098 @override
3099 String image_pick_failed(String error) {
3100 return 'Failed to select image: $error';
3101 }
3102
3103 @override
3104 String get calendar_access => 'Calendar Access';
3105
3106 @override
3107 String get calendar_access_desc =>
3108 'Allow AI to read and create calendar events';
3109
3110 @override
3111 String get calendar_permission_denied =>
3112 'Calendar permission denied. Please grant calendar access in your device settings.';
3113
3114 @override
3115 String get location_access => 'Location Access';
3116
3117 @override
3118 String get location_access_desc =>
3119 'Allow AI to get your current location with place name';
3120
3121 @override
3122 String get location_permission_denied =>
3123 'Location permission denied. Please grant location access in your device settings.';
3124
3125 @override
3126 String get builtin_ai_not_supported =>
3127 'Built-in AI is not supported on this device.';
3128
3129 @override
3130 String get builtin_ai_unsupported_desc =>
3131 'Your device hardware or OS does not support on-device system AI (e.g. Gemini Nano / Apple Intelligence). Please choose a downloadable model instead.';
3132
3133 @override
3134 String get builtin_ai_unsupported_chip => 'Not Supported';
3135
3136 @override
3137 String get builtin_ai_enable => 'Enable';
3138
3139 @override
3140 String get model_reasoning_default => 'Modellstandard';
3141
3142 @override
3143 String get model_reasoning_on => 'Ein';
3144
3145 @override
3146 String get model_reasoning_help =>
3147 'Gilt für die nächste Antwort. Aus deaktiviert das Denken, sofern die Chatvorlage des Modells dies unterstützt.';
3148
3149 @override
3150 String get model_reasoning_save_error =>
3151 'Denkmodus konnte nicht gespeichert werden. Bitte erneut versuchen.';
3152
3153 @override
3154 String get on_device_engine_failed_error =>
3155 'Das On-Device-Modell reagiert nicht mehr, meist weil die Unterhaltung das Kontextfenster überschritten hat. Das Modell wird neu geladen. Versuche es erneut, starte einen neuen Chat oder erhöhe die Kontextlänge in den Einstellungen.';
3156
3157 @override
3158 String get stt_error_no_match =>
3159 'Keine Sprache erkannt. Tippe, um es erneut zu versuchen.';
3160
3161 @override
3162 String get stt_error_speech_timeout =>
3163 'Keine Sprache erkannt. Tippe, um es erneut zu versuchen.';
3164
3165 @override
3166 String get stt_error_permission => 'Mikrofonberechtigung verweigert.';
3167
3168 @override
3169 String get stt_error_busy =>
3170 'Die Spracherkennung ist beschäftigt. Bitte versuche es erneut.';
3171
3172 @override
3173 String get stt_error_network =>
3174 'Netzwerkfehler. Bitte prüfe deine Verbindung und versuche es erneut.';
3175
3176 @override
3177 String get stt_error_audio =>
3178 'Fehler bei der Audioaufnahme. Bitte prüfe dein Mikrofon.';
3179
3180 @override
3181 String get stt_error_client =>
3182 'Der Spracherkennungsdienst konnte nicht gestartet werden. Stelle sicher, dass eine Spracheingabe-App installiert und als Standard-Spracherkennung festgelegt ist, und versuche es erneut.';
3183
3184 @override
3185 String get stt_error_language =>
3186 'Die Spracherkennung auf diesem Gerät unterstützt deine Sprache nicht.';
3187
3188 @override
3189 String get stt_error_unavailable =>
3190 'Auf diesem Gerät wurde kein Spracherkennungsdienst gefunden. Installiere eine Spracheingabe-App (zum Beispiel FUTO Voice Input) und lege sie als Standard-Spracherkennung fest.';
3191
3192 @override
3193 String stt_error_generic(String code) {
3194 return 'Fehler bei der Spracherkennung: $code';
3195 }
3196
3197 @override
3198 String get send_temperature_to_api => 'Temperatur senden';
3199
3200 @override
3201 String get send_top_p_to_api => 'Top P senden';
3202
3203 @override
3204 String get send_sampling_params_desc =>
3205 'Für Anbieter oder Modelle deaktivieren, die diesen Parameter ablehnen (z. B. einige Reasoning-Modelle). Gilt für alle Chats mit Remote-Servern.';
3206
3207 @override
3208 String get default_system_prompt => 'Standard-Systemprompt';
3209
3210 @override
3211 String get default_system_prompt_desc =>
3212 'Wird für Chats ohne Persona und ohne eigenen Systemprompt verwendet.';
3213
3214 @override
3215 String get default_system_prompt_hint => 'Du bist ein hilfreicher Assistent…';
3216
3217 @override
3218 String background_generation_notice(String title) {
3219 return 'Antwort in „$title“ läuft noch. Du kannst hier senden, sobald sie fertig ist. Tippen zum Öffnen.';
3220 }
3221
3222 @override
3223 String get background_generation_notice_untitled =>
3224 'Ein anderer Chat antwortet noch. Du kannst hier senden, sobald er fertig ist. Tippen zum Öffnen.';
3225
3226 @override
3227 String background_generation_notice_info(String title) {
3228 return 'Antwort in „$title“ im Hintergrund. Tippen zum Öffnen.';
3229 }
3230
3231 @override
3232 String get background_generation_notice_info_untitled =>
3233 'Ein anderer Chat antwortet im Hintergrund. Tippen zum Öffnen.';
3234
3235 @override
3236 String background_generation_notice_multiple(int count) {
3237 return '$count Chats antworten im Hintergrund.';
3238 }
3239
3240 @override
3241 String get background_generation_chat_untitled => 'Chat ohne Titel';
3242 }