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