main
dart 3,255 lines 101 KB
Raw
1 // ignore: unused_import
2 import 'package:intl/intl.dart' as intl;
3 import 'app_localizations.dart';
4
5 // ignore_for_file: type=lint
6
7 /// The translations for Russian (`ru`).
8 class AppLocalizationsRu extends AppLocalizations {
9 AppLocalizationsRu([String locale = 'ru']) : super(locale);
10
11 @override
12 String get app_name => 'LocalMind';
13
14 @override
15 String get app_tagline => 'Ваш ИИ. Ваше устройство. Ваши правила.';
16
17 @override
18 String get app_version => '1.0.0';
19
20 @override
21 String get cancel => 'Отмена';
22
23 @override
24 String get confirm => 'Подтверждать';
25
26 @override
27 String get delete => 'Удалить';
28
29 @override
30 String get save => 'Сохранять';
31
32 @override
33 String get retry => 'Повторить попытку';
34
35 @override
36 String get close => 'Закрывать';
37
38 @override
39 String get done => 'Сделанный';
40
41 @override
42 String get continue_action => 'Продолжать';
43
44 @override
45 String get skip => 'Пропускать';
46
47 @override
48 String get install => 'Установить';
49
50 @override
51 String get download => 'Скачать';
52
53 @override
54 String get resume => 'Продолжить';
55
56 @override
57 String get pause => 'Пауза';
58
59 @override
60 String get stop => 'Останавливаться';
61
62 @override
63 String get edit => 'Редактировать';
64
65 @override
66 String get preview => 'Предварительный просмотр';
67
68 @override
69 String get unload => 'Разгрузить';
70
71 @override
72 String get load => 'Нагрузка';
73
74 @override
75 String get rename => 'Переименовать';
76
77 @override
78 String get pin => 'Приколоть';
79
80 @override
81 String get unpin => 'Открепить';
82
83 @override
84 String get share => 'Делиться';
85
86 @override
87 String get copy => 'Копировать';
88
89 @override
90 String get copied => 'Скопировано!';
91
92 @override
93 String get copied_to_clipboard => 'Скопировано в буфер обмена';
94
95 @override
96 String get select => 'Выбирать';
97
98 @override
99 String get active => 'Активный';
100
101 @override
102 String get all => 'Все';
103
104 @override
105 String get none => 'Никто';
106
107 @override
108 String get none_selected => 'Ничего не выбрано';
109
110 @override
111 String get online => 'Онлайн';
112
113 @override
114 String get connected => 'Подключено';
115
116 @override
117 String get checking => 'Проверка';
118
119 @override
120 String get offline => 'Оффлайн';
121
122 @override
123 String get error => 'Ошибка';
124
125 @override
126 String get unknown_error => 'Неизвестная ошибка';
127
128 @override
129 String get not_now => 'Не сейчас';
130
131 @override
132 String get enable => 'Давать возможность';
133
134 @override
135 String get proceed_anyway => 'Продолжить в любом случае';
136
137 @override
138 String get test_connection => 'Тестовое соединение';
139
140 @override
141 String get testing => 'Тестирование...';
142
143 @override
144 String get connection_successful => 'Подключение успешно!';
145
146 @override
147 String get connection_failed =>
148 'Соединение не удалось. Проверьте свои настройки.';
149
150 @override
151 String get save_continue => 'Сохранить и продолжить';
152
153 @override
154 String get save_changes => 'Сохранить изменения';
155
156 @override
157 String get finish_setup => 'Завершить настройку';
158
159 @override
160 String get start_new_chat => 'Начать новый чат';
161
162 @override
163 String get cannot_undo => 'Это действие невозможно отменить.';
164
165 @override
166 String get ram_warning => 'Предупреждение об оперативной памяти';
167
168 @override
169 String get recommended => 'РЕКОМЕНДУЕТСЯ';
170
171 @override
172 String get may_be_large => 'Может быть слишком большим для этого устройства';
173
174 @override
175 String get calculating => 'Расчет...';
176
177 @override
178 String get download_failed => 'Загрузка не удалась';
179
180 @override
181 String get downloaded => 'Скачано';
182
183 @override
184 String get not_downloaded => 'Не загружено';
185
186 @override
187 String get installed => 'Установлено';
188
189 @override
190 String get not_installed => 'Не установлено';
191
192 @override
193 String get loading => 'Загрузка...';
194
195 @override
196 String get thinking => 'мышление';
197
198 @override
199 String get processing => 'Обработка...';
200
201 @override
202 String get initializing => 'Инициализация...';
203
204 @override
205 String get ready => 'Готовый';
206
207 @override
208 String get preparing_app => 'Подготовка приложения...';
209
210 @override
211 String get initializing_services => 'Инициализация служб...';
212
213 @override
214 String get configuring_server => 'Настройка сервера...';
215
216 @override
217 String get startup_failed => 'Запуск не удался';
218
219 @override
220 String get something_went_wrong => 'Что-то пошло не так';
221
222 @override
223 String get delete_model_title => 'Удалить модель';
224
225 @override
226 String delete_model_body(String name) {
227 return 'Вы уверены, что хотите удалить $name?';
228 }
229
230 @override
231 String delete_model_body_with_size(String name, String size) {
232 return 'Вы уверены, что хотите удалить $name? Это освободит примерно $size места.\n\nПри необходимости вы сможете загрузить эту модель позже.';
233 }
234
235 @override
236 String get delete_voice_title => 'Удалить голос';
237
238 @override
239 String delete_voice_body(String name, String size) {
240 return 'Вы уверены, что хотите удалить $name? Это освободит примерно $size места.\n\nПри необходимости вы сможете скачать этот голос позже.';
241 }
242
243 @override
244 String get delete_server_title => 'Удалить сервер';
245
246 @override
247 String delete_server_body(String name) {
248 return 'Вы уверены, что хотите удалить \"$name\"? Это невозможно отменить.';
249 }
250
251 @override
252 String get delete_conversation_title => 'Удалить разговор?';
253
254 @override
255 String delete_conversation_body(String title) {
256 return 'Вы уверены, что хотите удалить \"$title\"? Это невозможно отменить.';
257 }
258
259 @override
260 String get delete_message_title => 'Удалить сообщение?';
261
262 @override
263 String delete_persona_title(String name) {
264 return 'Удалить \"$name\"?';
265 }
266
267 @override
268 String get delete_persona_body => 'Это невозможно отменить.';
269
270 @override
271 String get delete_builtin_persona_body =>
272 'Это встроенный персонаж. Вы можете восстановить его позже в Настройках.';
273
274 @override
275 String get restore_builtin_personas => 'Восстановить стандартных персонажей';
276
277 @override
278 String get restore_builtin_personas_desc =>
279 'Заново добавить всех удаленных встроенных персонажей';
280
281 @override
282 String get restore_builtin_personas_success =>
283 'Персонажи по умолчанию восстановлены';
284
285 @override
286 String get clear_personas => 'Сбросить персонажей';
287
288 @override
289 String get enable_image_compression => 'Сжимать изображения перед отправкой';
290
291 @override
292 String get enable_image_compression_desc =>
293 'Изменять размер и сжимать прикрепленные изображения, чтобы размер загрузки оставался в пределах лимитов сервера';
294
295 @override
296 String get image_compression_level => 'Агрессивность сжатия';
297
298 @override
299 String get image_compression_level_desc =>
300 'Более высокая агрессивность дает файлы меньшего размера при более низком качестве';
301
302 @override
303 String get image_compression_level_low => 'Низкая';
304
305 @override
306 String get image_compression_level_medium => 'Средняя';
307
308 @override
309 String get image_compression_level_high => 'Высокая';
310
311 @override
312 String get sort_models_tooltip => 'Сортировка моделей';
313
314 @override
315 String get sort_by_favorites => 'Сначала избранные';
316
317 @override
318 String get sort_by_name => 'По имени (А-Я)';
319
320 @override
321 String get sort_by_size_smallest => 'Размер (сначала меньшие)';
322
323 @override
324 String get sort_by_size_largest => 'Размер (сначала большие)';
325
326 @override
327 String get sort_by_context_length => 'Длина контекста';
328
329 @override
330 String bulk_ai_rename_progress(int done, int total) {
331 return 'Переименование $done/$total...';
332 }
333
334 @override
335 String selected_count(int count) {
336 return 'Выбрано: $count';
337 }
338
339 @override
340 String get ai_rename_tooltip => 'Переименовать выбранные с помощью ИИ';
341
342 @override
343 String get new_chat_in_folder_tooltip => 'Новый чат в этой папке';
344
345 @override
346 String total_tokens_count(int count) {
347 return 'Токенов: $count';
348 }
349
350 @override
351 String get smart_replies_use_persona =>
352 'Использовать персонаж в умных ответах';
353
354 @override
355 String get smart_replies_use_persona_desc =>
356 'Предлагаемые ответы будут соответствовать тону активного персонажа, а не общего ассистента';
357
358 @override
359 String get keep_persona_on_new_chat => 'Сохранять персонаж при новом чате';
360
361 @override
362 String get keep_persona_on_new_chat_desc =>
363 'Не сбрасывать выбранных персонажей при создании нового чата';
364
365 @override
366 String get role_swap_button_enabled => 'Показывать кнопку смены ролей';
367
368 @override
369 String get role_swap_button_enabled_desc =>
370 'Показывать кнопку в поле ввода чата для отправки сообщения от лица ассистента, а не пользователя (без генерации ответа)';
371
372 @override
373 String get send_as_user_tooltip => 'Отправить от пользователя';
374
375 @override
376 String get send_as_assistant_tooltip =>
377 'Отправить от ассистента (без ответа)';
378
379 @override
380 String get insert_without_generating_tooltip => 'Вставить без генерации';
381
382 @override
383 String get token_usage_title => 'Использование токенов';
384
385 @override
386 String get total_tokens_label => 'Использовано токенов';
387
388 @override
389 String get usage_percent_label => 'Использовано контекста';
390
391 @override
392 String get export_choice_title => 'Экспорт';
393
394 @override
395 String get export_choice_body => 'Как вы хотите это экспортировать?';
396
397 @override
398 String get copy_to_clipboard => 'Копировать в буфер обмена';
399
400 @override
401 String bulk_export_conversations_success(int count) {
402 return 'Экспортировано чатов: $count';
403 }
404
405 @override
406 String get bulk_ai_rename_confirm_title => 'Переименовать с помощью ИИ?';
407
408 @override
409 String bulk_ai_rename_confirm_body(int count) {
410 return 'ИИ сгенерирует новые заголовки для $count выбранных чатов, заменив текущие. Это может занять некоторое время и действие нельзя отменить.';
411 }
412
413 @override
414 String get sort_by_modified_date => 'Последнее изменение';
415
416 @override
417 String get sort_by_created_date => 'Дата создания';
418
419 @override
420 String get sort_title => 'Сортировка';
421
422 @override
423 String get clear_conversation_title => 'Ясный разговор?';
424
425 @override
426 String get clear_conversation_body =>
427 'Это приведет к удалению всех сообщений в этом разговоре.';
428
429 @override
430 String get clear => 'Прозрачный';
431
432 @override
433 String label_completed(String label) {
434 return '$label завершено';
435 }
436
437 @override
438 String error_with_message(String error) {
439 return 'Ошибка: $error';
440 }
441
442 @override
443 String preview_failed(String error) {
444 return 'Не удалось выполнить предварительный просмотр: $error';
445 }
446
447 @override
448 String loading_model(String modelId) {
449 return 'Загрузка $modelId...';
450 }
451
452 @override
453 String model_loaded(String modelId, String backend) {
454 return 'Модель загружена: $modelId ($backend)';
455 }
456
457 @override
458 String get no_model_loaded =>
459 'Ни одна модель не загружена. Нажмите «Управление моделями на устройстве», чтобы скачать и загрузить модель.';
460
461 @override
462 String loading_model_error(String error) {
463 return 'Ошибка: $error';
464 }
465
466 @override
467 String get delete_conversation => 'Удалить разговор?';
468
469 @override
470 String get nav_history => 'История';
471
472 @override
473 String get nav_servers => 'Серверы';
474
475 @override
476 String get nav_local_models => 'Локальные модели';
477
478 @override
479 String get nav_tts => 'Текст в речь';
480
481 @override
482 String get nav_personas => 'Персоны';
483
484 @override
485 String get nav_settings => 'Настройки';
486
487 @override
488 String get nav_new_chat => 'Новый чат';
489
490 @override
491 String get search_hint => 'Поиск разговоров...';
492
493 @override
494 String get no_server_selected => 'Сервер не выбран';
495
496 @override
497 String get switch_server => 'Переключить сервер';
498
499 @override
500 String get switch_server_subtitle => 'Выберите сервер для подключения';
501
502 @override
503 String get manage_servers => 'Управление серверами';
504
505 @override
506 String get open_source => 'Открытый исходный код';
507
508 @override
509 String get open_source_desc =>
510 'LocalMind имеет открытый исходный код. Следите за нашим прогрессом или вносите свой вклад на GitHub.';
511
512 @override
513 String get star_on_github => 'Звезда на GitHub';
514
515 @override
516 String get add_more => 'Добавить еще';
517
518 @override
519 String get on_github => 'на GitHub';
520
521 @override
522 String get could_not_open_github => 'Не удалось открыть GitHub.';
523
524 @override
525 String get settings_title => 'Настройки';
526
527 @override
528 String get settings_appearance => 'Появление';
529
530 @override
531 String get settings_language => 'Язык';
532
533 @override
534 String get language_system_default => 'Системные настройки по умолчанию';
535
536 @override
537 String get settings_tts => 'Преобразование текста в речь';
538
539 @override
540 String get settings_android_assistant => 'Помощник Android';
541
542 @override
543 String get assistant_default_title => 'Голосовой помощник по умолчанию';
544
545 @override
546 String get assistant_default_description =>
547 'Установите Localmind в качестве голосового помощника по умолчанию на Android.';
548
549 @override
550 String get assistant_status_active =>
551 'Localmind установлен в качестве помощника по умолчанию';
552
553 @override
554 String get assistant_status_available =>
555 'Localmind можно установить в качестве помощника по умолчанию';
556
557 @override
558 String get assistant_status_manual =>
559 'Откройте системные настройки и выберите Localmind вручную';
560
561 @override
562 String get assistant_status_unsupported =>
563 'Настройка помощника по умолчанию доступна только на Android 7.0+';
564
565 @override
566 String get assistant_status_checking => 'Проверка статуса помощника…';
567
568 @override
569 String get assistant_set_default => 'Установить помощник по умолчанию';
570
571 @override
572 String get assistant_open_settings => 'Открыть настройки помощника';
573
574 @override
575 String assistant_error(Object error) {
576 return 'Ошибка: $error';
577 }
578
579 @override
580 String get settings_behavior => 'Поведение';
581
582 @override
583 String get settings_on_device => 'Вывод на устройстве';
584
585 @override
586 String get settings_default_server => 'Сервер по умолчанию';
587
588 @override
589 String get settings_default_persona => 'Персона по умолчанию';
590
591 @override
592 String get settings_default_model => 'Модель по умолчанию';
593
594 @override
595 String get settings_default_model_desc =>
596 'Автоматически выбирается при начале нового чата.';
597
598 @override
599 String get settings_privacy => 'Конфиденциальность';
600
601 @override
602 String get settings_data_management => 'Управление данными';
603
604 @override
605 String get settings_about => 'О';
606
607 @override
608 String get theme => 'Тема';
609
610 @override
611 String get theme_system => 'Система';
612
613 @override
614 String get theme_light => 'Свет';
615
616 @override
617 String get theme_dark => 'Темный';
618
619 @override
620 String get theme_claude => 'Клод';
621
622 @override
623 String get font_size => 'Размер шрифта';
624
625 @override
626 String get font_size_desc => 'Настройте размер текста в чате.';
627
628 @override
629 String get font_preview =>
630 'Быстрая бурая лиса перепрыгивает через ленивую собаку.';
631
632 @override
633 String get code_theme_dark => 'Кодовая тема (темная)';
634
635 @override
636 String get code_theme_light => 'Тема кода (светлая)';
637
638 @override
639 String get code_theme_desc =>
640 'Выберите тему подсветки синтаксиса для блоков кода.';
641
642 @override
643 String get tts_engine => 'Двигатель ТТС';
644
645 @override
646 String get tts_engine_system => 'Система ТТС';
647
648 @override
649 String get tts_engine_kitten => 'Котенок ТТС';
650
651 @override
652 String get voice => 'Голос';
653
654 @override
655 String get voice_female => 'Женский';
656
657 @override
658 String get voice_male => 'Мужской';
659
660 @override
661 String get voice_other => 'Другой';
662
663 @override
664 String get tts_speed => 'Скорость TTS';
665
666 @override
667 String get tts_speed_desc => 'Отрегулируйте скорость воспроизведения.';
668
669 @override
670 String get manage_tts_models => 'Управление моделями TTS';
671
672 @override
673 String get manage_on_device_models => 'Управление моделями на устройстве';
674
675 @override
676 String get enable_smart_reply => 'Умные ответы на устройстве';
677
678 @override
679 String get ai_user_response_enabled =>
680 'Сообщение пользователя через ИИ (зажать кнопку)';
681
682 @override
683 String get ai_user_response_enabled_desc =>
684 'Зажмите кнопку отправки на 3 секунды, чтобы ИИ написал и отправил следующее сообщение за вас';
685
686 @override
687 String get ai_user_response_tooltip =>
688 'Сгенерировать сообщение пользователя с помощью ИИ';
689
690 @override
691 String get streaming_responses => 'Потоковая передача ответов';
692
693 @override
694 String get auto_generate_titles => 'Автоматическое создание заголовков';
695
696 @override
697 String get send_on_enter => 'Отправить при вводе';
698
699 @override
700 String get show_system_messages => 'Показать системные сообщения';
701
702 @override
703 String get show_system_messages_desc =>
704 'Если персонаж не выбран, отправлять стандартный системный промпт ассистента с каждым запросом';
705
706 @override
707 String get show_system_messages_in_chat =>
708 'Показывать системные сообщения в чате';
709
710 @override
711 String get show_system_messages_in_chat_desc =>
712 'Отображать системные сообщения (например, из импортированной резервной копии) в виде облачков сообщений в чате';
713
714 @override
715 String get auto_collapse_thinking => 'Автосворачивание рассуждений';
716
717 @override
718 String get auto_collapse_thinking_desc =>
719 'Автоматически сворачивать блок рассуждений после завершения генерации, если присутствует основной ответ';
720
721 @override
722 String get haptic_feedback => 'Тактильная обратная связь';
723
724 @override
725 String get enable_mcp => 'Включить MCP';
726
727 @override
728 String get new_chat_mcp_default => 'Новый чат MCP по умолчанию';
729
730 @override
731 String get show_data_indicator => 'Показать индикатор данных';
732
733 @override
734 String get privacy_info => '«LocalMind никогда не видит ваши данные»';
735
736 @override
737 String get delete_all_conversations => 'Удалить все разговоры';
738
739 @override
740 String get reset_settings_defaults =>
741 'Сброс настроек к значениям по умолчанию';
742
743 @override
744 String get chat_title => 'LocalMind';
745
746 @override
747 String get chat_parameters_tooltip => 'Параметры чата';
748
749 @override
750 String get change_persona => 'Изменить личность';
751
752 @override
753 String get set_persona => 'Установить Персону';
754
755 @override
756 String get remove_persona => 'Удалить персону';
757
758 @override
759 String get clear_conversation => 'Чистый разговор';
760
761 @override
762 String get connection_error => 'Ошибка подключения. Проверьте свой сервер.';
763
764 @override
765 String get disconnected => 'Отключился от сервера.';
766
767 @override
768 String get configure => 'Настроить';
769
770 @override
771 String get select_model => 'Выберите модель';
772
773 @override
774 String get select_persona => 'Выберите Персону';
775
776 @override
777 String get manage_personas => 'Управление персонажами';
778
779 @override
780 String get personas_combine_hint => 'Выбранные персонажи будут объединены';
781
782 @override
783 String get start_conversation => 'Начать разговор';
784
785 @override
786 String get recent_chats => 'Недавние чаты';
787
788 @override
789 String get see_all => 'Посмотреть все';
790
791 @override
792 String get quick_write => 'Помогите мне написать функцию';
793
794 @override
795 String get quick_explain => 'Объясните этот код';
796
797 @override
798 String get quick_debug => 'Отладьте это для меня';
799
800 @override
801 String get quick_async => 'Как использовать async/await?';
802
803 @override
804 String get history_missing_title => 'История отсутствует';
805
806 @override
807 String get history_missing_desc =>
808 'Либо сообщения в этом чате были удалены, либо запись истории повреждена.';
809
810 @override
811 String get technical_details => 'Технические детали';
812
813 @override
814 String get last_error => 'Последняя ошибка:';
815
816 @override
817 String get copy_info => 'Копировать информацию';
818
819 @override
820 String get conversation_id => 'Идентификатор беседы';
821
822 @override
823 String get created_at => 'Создано в';
824
825 @override
826 String get expected_messages => 'Ожидаемые сообщения';
827
828 @override
829 String get debug_dialog_desc =>
830 'Диагностическая информация, помогающая выявить проблемы синхронизации.';
831
832 @override
833 String get chat_input_hint => 'Спроси что-нибудь';
834
835 @override
836 String get send_message_tooltip => 'Отправить сообщение';
837
838 @override
839 String get stop_generation_tooltip => 'Остановить генерацию';
840
841 @override
842 String get attach_images_tooltip => 'Прикрепите изображения или текст';
843
844 @override
845 String get start_listening_tooltip => 'Начать слушать';
846
847 @override
848 String get stop_listening_tooltip => 'Хватит слушать';
849
850 @override
851 String tool_label(String toolCallId) {
852 return 'Инструмент: $toolCallId';
853 }
854
855 @override
856 String get tool_unknown => 'Инструмент: Неизвестно';
857
858 @override
859 String get message_options => 'Параметры сообщения';
860
861 @override
862 String get copy_markdown => 'Скопировать как Markdown';
863
864 @override
865 String get copied_markdown => 'Скопировано как Markdown';
866
867 @override
868 String get read_aloud => 'Читать вслух';
869
870 @override
871 String get stop_reading => 'Хватит читать';
872
873 @override
874 String get more => 'Более';
875
876 @override
877 String character_count(int length) {
878 return '$length символов';
879 }
880
881 @override
882 String get edit_message => 'Редактировать сообщение';
883
884 @override
885 String get edit_message_desc =>
886 'При сохранении ответ помощника ниже будет удален и восстановлен.';
887
888 @override
889 String get save_regenerate => 'Сохранить и восстановить';
890
891 @override
892 String get chat_settings_title => 'Настройки чата';
893
894 @override
895 String get reset_defaults => 'Сбросить настройки по умолчанию';
896
897 @override
898 String get parameters_tab => 'Параметры';
899
900 @override
901 String get mcp_tab => 'МКП';
902
903 @override
904 String get temperature => 'Температура';
905
906 @override
907 String get temperature_desc =>
908 'Управляет случайностью: выше = креативно, ниже = сосредоточено.';
909
910 @override
911 String get top_p => 'Топ П';
912
913 @override
914 String get top_p_desc => 'Порог выборки ядра';
915
916 @override
917 String get max_tokens => 'Макс. жетонов';
918
919 @override
920 String get max_tokens_desc => 'Предел ответа';
921
922 @override
923 String get context_length => 'Длина контекста';
924
925 @override
926 String get context_length_desc => 'Окно истории';
927
928 @override
929 String get mcp_disabled_warning =>
930 'MCP отключен глобально. Включите его в настройках, чтобы использовать эти функции.';
931
932 @override
933 String get mcp_enable_chat => 'Включите MCP для этого чата';
934
935 @override
936 String get auto_execute_tools => 'Инструменты автоматического выполнения';
937
938 @override
939 String get beta_label => 'Бета';
940
941 @override
942 String get experimental_label => 'Экспериментальный';
943
944 @override
945 String get add_ephemeral_mcp => 'Добавить эфемерный сервер MCP';
946
947 @override
948 String get mcp_label_placeholder => 'Этикетка';
949
950 @override
951 String get mcp_url_placeholder => 'URL-адрес (https://...)';
952
953 @override
954 String get active_integrations => 'Активная интеграция';
955
956 @override
957 String get import_mcp_json => 'Импортировать JSON';
958
959 @override
960 String get import_mcp_json_dialog_title => 'Импорт JSON конфигурации MCP';
961
962 @override
963 String get import_mcp_json_instructions =>
964 'Скопируйте ваш mcpServers JSON напрямую из LM Studio (mcp.json) или вставьте массив плагинов ниже:';
965
966 @override
967 String get import_mcp_json_placeholder =>
968 'Вставьте сюда mcpServers JSON или список плагинов...';
969
970 @override
971 String mcp_import_success(int count) {
972 return 'Успешно импортировано интеграций: $count';
973 }
974
975 @override
976 String get mcp_import_failed =>
977 'В JSON не найдено действительных интеграций MCP';
978
979 @override
980 String get enable_notifications => 'Включить уведомления';
981
982 @override
983 String get enable_notifications_desc =>
984 'Получайте уведомления, когда модели завершают загрузку.';
985
986 @override
987 String get chat_history_title => 'История чата';
988
989 @override
990 String get conversation_just_now => 'Прямо сейчас';
991
992 @override
993 String conversation_minutes_ago(int minutes) {
994 return '$minutes мин назад';
995 }
996
997 @override
998 String conversation_hours_ago(int hours) {
999 return '$hoursч назад';
1000 }
1001
1002 @override
1003 String get conversation_yesterday => 'Вчера';
1004
1005 @override
1006 String conversation_days_ago(int days) {
1007 return '$daysд назад';
1008 }
1009
1010 @override
1011 String conversation_date(int month, int day, int year) {
1012 return '$month/$day/$year';
1013 }
1014
1015 @override
1016 String get options_tooltip => 'Параметры';
1017
1018 @override
1019 String get no_results_found => 'Результаты не найдены';
1020
1021 @override
1022 String get no_conversations_yet => 'Пока нет разговоров';
1023
1024 @override
1025 String get try_different_search => 'Попробуйте другой поисковый запрос';
1026
1027 @override
1028 String get start_new_conversation => 'Начать новый разговор';
1029
1030 @override
1031 String get rename_conversation => 'Переименовать беседу';
1032
1033 @override
1034 String get enter_new_title => 'Введите новое название';
1035
1036 @override
1037 String get pinned_section => 'ПРИКРЕПЛЕНО';
1038
1039 @override
1040 String get today_section => 'СЕГОДНЯ';
1041
1042 @override
1043 String get yesterday_section => 'ВЧЕРА';
1044
1045 @override
1046 String get previous_7_days => 'ПРЕДЫДУЩИЕ 7 ДНЕЙ';
1047
1048 @override
1049 String get previous_30_days => 'ПРЕДЫДУЩИЕ 30 ДНЕЙ';
1050
1051 @override
1052 String get older_section => 'СТАРШЕ';
1053
1054 @override
1055 String get onboarding_choose_language => 'Выберите язык';
1056
1057 @override
1058 String get onboarding_choose_language_desc =>
1059 'Выберите предпочитаемый язык. Вы можете изменить это в любое время в настройках.';
1060
1061 @override
1062 String get onboarding_localmind => 'МЕСТНЫЙ РАЗУМ';
1063
1064 @override
1065 String get onboarding_connect_server => 'Подключите свой\nСервер';
1066
1067 @override
1068 String get onboarding_connect_desc =>
1069 'Подключитесь к LM Studio, Ollama или\nOpenRouter для запуска вашего частного ИИ\nопыт.';
1070
1071 @override
1072 String get openai_compatible_api => 'OpenAI-совместимый API';
1073
1074 @override
1075 String get https_requires_ssl => 'HTTPS требует SSL';
1076
1077 @override
1078 String get most_local_setups_use_http =>
1079 'Большинство локальных установок используют http://';
1080
1081 @override
1082 String get onboarding_welcome => 'Добро пожаловать в LocalMind';
1083
1084 @override
1085 String get server_type_on_device => 'На устройстве';
1086
1087 @override
1088 String get server_type_lm_studio => 'ЛМ Студия';
1089
1090 @override
1091 String get server_type_ollama => 'Оллама';
1092
1093 @override
1094 String get server_type_ollama_cloud => 'Ollama Cloud';
1095
1096 @override
1097 String get server_type_ollama_cloud_sub => 'УПРАВЛЯЕМОЕ ОБЛАКО';
1098
1099 @override
1100 String get server_type_ollama_cloud_display => 'Ollama Cloud';
1101
1102 @override
1103 String get server_address_ollama_cloud => 'ollama.com';
1104
1105 @override
1106 String get ollama_cloud_disclosure =>
1107 'При подключении к Ollama Cloud ваши сообщения чата и ввод отправляются на управляемые серверы Ollama для генерации. LocalMind не отслеживает и не сохраняет ваши разговоры. Вы можете отозвать этот ключ в любое время на странице ollama.com/settings/keys.';
1108
1109 @override
1110 String get api_key_required_ollama_cloud =>
1111 'Требуется API-ключ для Ollama Cloud';
1112
1113 @override
1114 String get api_key_hint_ollama_cloud => 'Вставьте ваш API-ключ Ollama Cloud';
1115
1116 @override
1117 String get add_server_ollama_cloud_subtitle =>
1118 'Подключитесь к Ollama Cloud с помощью API-ключа с сайта ollama.com/settings/keys для доступа к управляемым облачным моделям.';
1119
1120 @override
1121 String get add_server_openrouter_subtitle =>
1122 'Подключитесь через OpenRouter с помощью действительного API-ключа и держите этот профиль готовым для маршрутизации моделей.';
1123
1124 @override
1125 String get add_server_requesty_subtitle =>
1126 'Подключитесь через Requesty с помощью действительного API-ключа и держите этот профиль готовым для маршрутизации моделей.';
1127
1128 @override
1129 String get add_server_endpoint_subtitle =>
1130 'Настройте локальную или собственную конечную точку, затем проверьте соединение перед сохранением.';
1131
1132 @override
1133 String get server_type_openrouter => 'OpenRouter';
1134
1135 @override
1136 String get server_type_requesty => 'Requesty';
1137
1138 @override
1139 String get server_type_openrouter_sub => 'ЕДИНОЕ ОБЛАКО';
1140
1141 @override
1142 String get server_type_requesty_sub => 'ЕДИНОЕ ОБЛАКО';
1143
1144 @override
1145 String get ready_continue => 'ГОТОВЫ ПРОДОЛЖИТЬ';
1146
1147 @override
1148 String get waiting_selection => 'ОЖИДАНИЕ ВЫБОРА';
1149
1150 @override
1151 String get setup_connection => 'Настройка соединения';
1152
1153 @override
1154 String setup_connection_desc(String server) {
1155 return 'Настройте свой сервер $server, чтобы начать общение.';
1156 }
1157
1158 @override
1159 String get server_name => 'Имя сервера';
1160
1161 @override
1162 String get name_required => 'Требуется имя';
1163
1164 @override
1165 String get name_max_50 => 'Макс. 50 символов.';
1166
1167 @override
1168 String get host_label => 'Хост/IP-адрес';
1169
1170 @override
1171 String get host_required => 'Требуется хост';
1172
1173 @override
1174 String get port_label => 'Порт';
1175
1176 @override
1177 String get port_required => 'Требуется порт';
1178
1179 @override
1180 String get port_invalid => 'Должно быть число';
1181
1182 @override
1183 String get port_range => 'Введите действительный порт (1-65535).';
1184
1185 @override
1186 String get api_key_required => 'API-ключ *';
1187
1188 @override
1189 String get api_key_optional => 'Ключ API (необязательно)';
1190
1191 @override
1192 String get api_key_required_openrouter =>
1193 'Ключ API, необходимый для OpenRouter';
1194
1195 @override
1196 String get api_key_required_requesty => 'Ключ API, необходимый для Requesty';
1197
1198 @override
1199 String get api_key_format => 'Ключи API OpenRouter начинаются с sk-';
1200
1201 @override
1202 String get my_server_hint => 'Мой сервер';
1203
1204 @override
1205 String get name_length_validation =>
1206 'Имя должно содержать не более 50 символов.';
1207
1208 @override
1209 String get host_valid => 'Введите действительное имя хоста или IP-адрес.';
1210
1211 @override
1212 String get api_key_hint_openrouter => 'ск-...';
1213
1214 @override
1215 String get api_key_hint_requesty => 'rqsty-...';
1216
1217 @override
1218 String get api_key_hint_generic => 'Для аутентифицированных серверов';
1219
1220 @override
1221 String get update_server => 'Обновление сервера';
1222
1223 @override
1224 String get save_server => 'Сохранить сервер';
1225
1226 @override
1227 String get server_updated => 'Сервер обновлен';
1228
1229 @override
1230 String get server_added => 'Сервер добавлен';
1231
1232 @override
1233 String get download_model_title => 'Скачать модель';
1234
1235 @override
1236 String get download_model_desc =>
1237 'Выберите модель для загрузки.\nОн будет работать локально на вашем устройстве.';
1238
1239 @override
1240 String get on_device_android_only =>
1241 'Вывод на устройстве в настоящее время доступен только на Android.';
1242
1243 @override
1244 String get total_ram => 'Общий объем оперативной памяти';
1245
1246 @override
1247 String get available => 'Доступный';
1248
1249 @override
1250 String ram_min_required(String fileSize) {
1251 return '$fileSize ГБ ОЗУ мин.';
1252 }
1253
1254 @override
1255 String download_progress(String percent, String speed) {
1256 return '$percent% • $speed';
1257 }
1258
1259 @override
1260 String eta_label(String eta) {
1261 return 'Оставшееся время: $eta';
1262 }
1263
1264 @override
1265 String paused_progress(String percent) {
1266 return 'Приостановлено – $percent %';
1267 }
1268
1269 @override
1270 String ram_warning_body_download(String ram, String totalMemory) {
1271 return 'Для этой модели требуется не менее $ram ГБ ОЗУ, но на вашем устройстве имеется $totalMemory. Оно может работать неправильно или привести к сбою приложения.';
1272 }
1273
1274 @override
1275 String ram_warning_body_load(String availableRAM, String ram) {
1276 return 'На вашем устройстве доступно ОЗУ $availableRAM, но для этой модели рекомендуется не менее $ram ГБ. Загрузка может привести к сбою или вызвать нестабильность.';
1277 }
1278
1279 @override
1280 String get choose_theme => 'Выбрать тему';
1281
1282 @override
1283 String get choose_theme_desc =>
1284 'Персонализируйте внешний вид приложения. Вы всегда можете изменить это позже в настройках.';
1285
1286 @override
1287 String get theme_card_system => 'Система';
1288
1289 @override
1290 String get theme_card_system_sub =>
1291 'Соответствует настройкам вашего устройства';
1292
1293 @override
1294 String get theme_card_light => 'Свет';
1295
1296 @override
1297 String get theme_card_light_sub => 'Чистый и светлый';
1298
1299 @override
1300 String get theme_card_dark => 'Темный';
1301
1302 @override
1303 String get theme_card_dark_sub => 'Легко для глаз';
1304
1305 @override
1306 String get theme_card_claude => 'Клод';
1307
1308 @override
1309 String get theme_card_claude_sub => 'Теплая тема персикового оттенка.';
1310
1311 @override
1312 String get stay_updated => 'Оставайтесь в курсе';
1313
1314 @override
1315 String get stay_updated_desc =>
1316 'Получайте уведомления, когда ваши модели ИИ завершают загрузку или завершаются длительные задачи.';
1317
1318 @override
1319 String get notification_benefit_downloads => 'Ход загрузки модели';
1320
1321 @override
1322 String get notification_benefit_completions => 'Завершения генерации';
1323
1324 @override
1325 String get notification_benefit_background => 'Статус фоновых задач';
1326
1327 @override
1328 String get allow_notifications => 'Разрешить уведомления';
1329
1330 @override
1331 String get servers_title => 'Серверы';
1332
1333 @override
1334 String get no_servers_yet => 'Серверов пока нет';
1335
1336 @override
1337 String get no_servers_desc =>
1338 'Добавьте свой первый сервер, чтобы начать общаться с моделями ИИ.';
1339
1340 @override
1341 String get add_server => 'Добавить сервер';
1342
1343 @override
1344 String switched_to_server(String name) {
1345 return 'Переключено на $name';
1346 }
1347
1348 @override
1349 String get edit_server => 'Редактировать сервер';
1350
1351 @override
1352 String get add_server_title => 'Добавить сервер';
1353
1354 @override
1355 String get server_type_label => 'Тип сервера';
1356
1357 @override
1358 String get server_icon_label => 'Значок сервера';
1359
1360 @override
1361 String get default_icon => 'Значок по умолчанию';
1362
1363 @override
1364 String get server_type_lm_studio_display => 'ЛМ Студия';
1365
1366 @override
1367 String get server_type_openai_display => 'Совместимость с OpenAI';
1368
1369 @override
1370 String get server_type_ollama_display => 'Оллама';
1371
1372 @override
1373 String get server_type_openrouter_display => 'OpenRouter';
1374
1375 @override
1376 String get server_type_requesty_display => 'Requesty';
1377
1378 @override
1379 String get server_type_on_device_display => 'На устройстве';
1380
1381 @override
1382 String get server_address_openrouter => 'openrouter.ai';
1383
1384 @override
1385 String get server_address_requesty => 'router.requesty.ai';
1386
1387 @override
1388 String get server_address_on_device => 'Локальный вывод';
1389
1390 @override
1391 String server_address_format(String host, String port) {
1392 return '$host:$port';
1393 }
1394
1395 @override
1396 String get default_badge => 'По умолчанию';
1397
1398 @override
1399 String get set_as_default => 'Установить по умолчанию';
1400
1401 @override
1402 String get select_icon => 'Выберите значок';
1403
1404 @override
1405 String get select_icon_desc => 'Выберите значок для своего сервера';
1406
1407 @override
1408 String get search_icons_hint => 'Иконки поиска...';
1409
1410 @override
1411 String get server_icon_stack => 'Серверный стек';
1412
1413 @override
1414 String get server_icon_stack2 => 'Серверный стек 02';
1415
1416 @override
1417 String get server_icon_stack3 => 'Серверный стек 03';
1418
1419 @override
1420 String get server_icon_cloud => 'Облако';
1421
1422 @override
1423 String get server_icon_cloud_server => 'Облачный сервер';
1424
1425 @override
1426 String get server_icon_mcp => 'MCP-сервер';
1427
1428 @override
1429 String get server_icon_database => 'База данных';
1430
1431 @override
1432 String get server_icon_database1 => 'База данных 01';
1433
1434 @override
1435 String get server_icon_database2 => 'База данных 02';
1436
1437 @override
1438 String get server_icon_cpu => 'Процессор';
1439
1440 @override
1441 String get server_icon_chip => 'Чип';
1442
1443 @override
1444 String get server_icon_chip2 => 'Чип 02';
1445
1446 @override
1447 String get server_icon_computer => 'Компьютер';
1448
1449 @override
1450 String get server_icon_laptop => 'Ноутбук';
1451
1452 @override
1453 String get server_icon_terminal => 'Компьютерный терминал';
1454
1455 @override
1456 String get server_icon_code => 'Код';
1457
1458 @override
1459 String get server_icon_ai_brain => 'ИИ Мозг';
1460
1461 @override
1462 String get server_icon_ai_brain2 => 'ИИ Мозг 02';
1463
1464 @override
1465 String get server_icon_ai_cloud => 'Облако ИИ';
1466
1467 @override
1468 String get server_icon_ai_network => 'Сеть искусственного интеллекта';
1469
1470 @override
1471 String get server_icon_ai_chat => 'AI-чат';
1472
1473 @override
1474 String get server_icon_cellular => 'Сотовая сеть';
1475
1476 @override
1477 String get server_icon_plug1 => 'Вилка 01';
1478
1479 @override
1480 String get server_icon_plug2 => 'Вилка 02';
1481
1482 @override
1483 String get server_icon_bot => 'Бот';
1484
1485 @override
1486 String get server_icon_bot2 => 'Бот 02';
1487
1488 @override
1489 String get server_icon_robotic => 'Роботизированный';
1490
1491 @override
1492 String get server_icon_rocket => 'Ракета';
1493
1494 @override
1495 String get server_icon_star => 'Звезда';
1496
1497 @override
1498 String get server_icon_settings1 => 'Настройки 01';
1499
1500 @override
1501 String get server_icon_settings2 => 'Настройки 02';
1502
1503 @override
1504 String get server_icon_home1 => 'Дом 01';
1505
1506 @override
1507 String get server_icon_home2 => 'Дом 02';
1508
1509 @override
1510 String get server_icon_folder1 => 'Папка 01';
1511
1512 @override
1513 String get server_icon_folder2 => 'Папка 02';
1514
1515 @override
1516 String get server_icon_file1 => 'Файл 01';
1517
1518 @override
1519 String get server_icon_lock => 'Замок';
1520
1521 @override
1522 String get server_icon_key => 'Ключ 01';
1523
1524 @override
1525 String get server_icon_link => 'Ссылка 01';
1526
1527 @override
1528 String get server_icon_globe => 'Глобус';
1529
1530 @override
1531 String get server_icon_api => 'API';
1532
1533 @override
1534 String get server_icon_arrow_right => 'Стрелка вправо 01';
1535
1536 @override
1537 String get server_icon_check => 'Проверить круг';
1538
1539 @override
1540 String get server_icon_alert => 'Круг оповещения';
1541
1542 @override
1543 String get server_icon_info => 'Информационный круг';
1544
1545 @override
1546 String get server_icon_zap => 'Зап';
1547
1548 @override
1549 String get server_icon_cloud_upload => 'Загрузка в облако';
1550
1551 @override
1552 String get server_icon_cloud_download => 'Облачная загрузка';
1553
1554 @override
1555 String get server_icon_refresh => 'Обновить';
1556
1557 @override
1558 String get server_icon_hard_drive => 'Жесткий диск';
1559
1560 @override
1561 String get server_icon_drive => 'Водить машину';
1562
1563 @override
1564 String get personas_title => 'Персоны';
1565
1566 @override
1567 String get persona_category_general => 'Общий';
1568
1569 @override
1570 String get persona_category_coding => 'Кодирование';
1571
1572 @override
1573 String get persona_category_education => 'Образование';
1574
1575 @override
1576 String get persona_category_creative => 'Креатив';
1577
1578 @override
1579 String get persona_builtin_section => 'ВСТРОЕННЫЙ';
1580
1581 @override
1582 String get persona_my_section => 'МОИ ПЕРСОНАЛЫ';
1583
1584 @override
1585 String get clone_edit => 'Клонировать и редактировать';
1586
1587 @override
1588 String get builtin_badge => 'Встроенный';
1589
1590 @override
1591 String get no_personas_found => 'Персоны не найдены';
1592
1593 @override
1594 String get no_personas_desc =>
1595 'Создайте свою первую личность, чтобы настроить поведение ИИ.';
1596
1597 @override
1598 String get edit_persona => 'Изменить личность';
1599
1600 @override
1601 String get create_persona => 'Создать Персону';
1602
1603 @override
1604 String get create_persona_button => 'Создавать';
1605
1606 @override
1607 String get emoji_label => 'Эмодзи';
1608
1609 @override
1610 String get name_label => 'Имя';
1611
1612 @override
1613 String get my_persona_hint => 'Моя Персона';
1614
1615 @override
1616 String get category_label => 'Категория';
1617
1618 @override
1619 String get description_optional => 'Описание (необязательно)';
1620
1621 @override
1622 String get description_hint => 'Что делает эта личность...';
1623
1624 @override
1625 String get system_prompt => 'Системная подсказка';
1626
1627 @override
1628 String character_count_max(int currentLen) {
1629 return '$currentLen/4000';
1630 }
1631
1632 @override
1633 String get no_prompt_placeholder => 'Пока нет подсказки...';
1634
1635 @override
1636 String get prompt_hint => 'Вы полезный помощник...';
1637
1638 @override
1639 String get prompt_required => 'Требуется системное приглашение';
1640
1641 @override
1642 String get prompt_max_chars => 'Макс. 4000 символов.';
1643
1644 @override
1645 String get advanced_settings => 'Расширенные настройки';
1646
1647 @override
1648 String get temperature_label => 'Температура (0,0-2,0)';
1649
1650 @override
1651 String get top_p_label => 'Топ П (0,0-1,0)';
1652
1653 @override
1654 String get temp_hint => '0,7';
1655
1656 @override
1657 String get top_p_hint => '0,9';
1658
1659 @override
1660 String get range_0_2 => '0,0-2,0';
1661
1662 @override
1663 String get range_0_1 => '0,0-1,0';
1664
1665 @override
1666 String get persona_updated => 'Персона обновлена';
1667
1668 @override
1669 String get persona_created => 'Персона создана';
1670
1671 @override
1672 String get tts_models_title => 'Модели преобразования текста в речь';
1673
1674 @override
1675 String get always_available => 'Всегда доступен';
1676
1677 @override
1678 String get tts_system_desc =>
1679 'Использует встроенный в ваше устройство механизм преобразования текста в речь.\nНикаких загрузок не требуется. Выбор голоса использует системные настройки вашего устройства.';
1680
1681 @override
1682 String get downloading_status => 'Загрузка...';
1683
1684 @override
1685 String tts_kitten_desc(String size) {
1686 return 'Молниеносный нейронный TTS с 8 выразительными голосами.\nТребуется загрузка $size.';
1687 }
1688
1689 @override
1690 String tts_piper_desc(String size) {
1691 return 'Быстрые офлайн-голоса Пайпер с двумя выразительными голосами.\nТребуется загрузка $size на голос.';
1692 }
1693
1694 @override
1695 String engine_spec(String sizeMb, String ramMb, int voiceCount) {
1696 return '$sizeMb МБ · $ramMb МБ ОЗУ · $voiceCount голосов';
1697 }
1698
1699 @override
1700 String get on_device_models_title => 'Модели на устройстве';
1701
1702 @override
1703 String get settings_huggingface_token =>
1704 'Жетон «Обнимающее лицо» (необязательно)';
1705
1706 @override
1707 String get settings_huggingface_token_desc =>
1708 'Требуется только для закрытых моделей (например, Gemma). Получите токен на сайтеhuggingface.co/settings/tokens.';
1709
1710 @override
1711 String get settings_huggingface_token_set => 'Токен сохранен.';
1712
1713 @override
1714 String get settings_huggingface_token_cleared => 'Токен очищен';
1715
1716 @override
1717 String get model_requires_huggingface_token =>
1718 'Требуется жетон «Обнимающее лицо».';
1719
1720 @override
1721 String get model_missing_huggingface_token =>
1722 'Данная модель изготовлена ​​на Hugging Face. Добавьте токен в «Настройки» → «Вывод на устройстве», чтобы загрузить его.';
1723
1724 @override
1725 String get set_huggingface_token => 'Установить токен';
1726
1727 @override
1728 String get clear_huggingface_token => 'Прозрачный';
1729
1730 @override
1731 String get edit_huggingface_token_dialog_title =>
1732 'Токен доступа «Обнимающее лицо»';
1733
1734 @override
1735 String get huggingface_token_dialog_hint => 'хф_…';
1736
1737 @override
1738 String get server_type_ollama_desc =>
1739 'Локальный ИИ-движок. Ключ API не требуется.';
1740
1741 @override
1742 String get server_type_on_device_desc =>
1743 'Работает на вашем телефоне. Некоторым моделям нужен жетон «Обнимающее лицо».';
1744
1745 @override
1746 String get server_type_lm_studio_desc =>
1747 'Локальный API-сервер. Ключ API не требуется.';
1748
1749 @override
1750 String get available_models => 'Доступные модели';
1751
1752 @override
1753 String get device_memory => 'Память устройства';
1754
1755 @override
1756 String get ram_usage => 'Использование оперативной памяти';
1757
1758 @override
1759 String get memory_healthy => 'Здоровый';
1760
1761 @override
1762 String get memory_critical => 'Критический';
1763
1764 @override
1765 String get memory_low => 'Низкий';
1766
1767 @override
1768 String ram_used(String percent) {
1769 return '$percent % использовано';
1770 }
1771
1772 @override
1773 String get available_ram => 'Доступная оперативная память';
1774
1775 @override
1776 String get total_capacity => 'Общая емкость';
1777
1778 @override
1779 String get loaded_status => 'Загружено';
1780
1781 @override
1782 String get inference_backend => 'Серверная часть вывода';
1783
1784 @override
1785 String get backend_ios_notice => 'В iOS доступен только серверный процессор.';
1786
1787 @override
1788 String get backend_cpu_desc =>
1789 'Работает на всех устройствах. Наиболее совместим.';
1790
1791 @override
1792 String get backend_gpu_desc =>
1793 'Ускорение OpenCL. Быстрее на поддерживаемых устройствах.';
1794
1795 @override
1796 String get backend_npu_desc =>
1797 'Поставщик НПУ (Qualcomm/MediaTek). Самый быстрый вывод.';
1798
1799 @override
1800 String get select_model_title => 'Выберите модель';
1801
1802 @override
1803 String get refresh_models => 'Обновить модели';
1804
1805 @override
1806 String get search_models_hint => 'Поиск моделей...';
1807
1808 @override
1809 String get no_server_connected => 'Сервер не подключен';
1810
1811 @override
1812 String get add_server_first =>
1813 'Сначала добавьте сервер, чтобы увидеть доступные модели.';
1814
1815 @override
1816 String get failed_load_models => 'Не удалось загрузить модели.';
1817
1818 @override
1819 String get no_models_available => 'Нет доступных моделей';
1820
1821 @override
1822 String no_models_match(String searchQuery) {
1823 return 'Нет моделей, соответствующих запросу \"$searchQuery\".';
1824 }
1825
1826 @override
1827 String model_load_failed(String error) {
1828 return 'Не удалось загрузить модель: $error';
1829 }
1830
1831 @override
1832 String model_unloaded_ollama(String name) {
1833 return 'Выгрузка запрошена для $name. Если Оллама доступен, модель выпускается немедленно.';
1834 }
1835
1836 @override
1837 String model_unloaded_success(String name) {
1838 return '$name успешно выгружено';
1839 }
1840
1841 @override
1842 String model_unload_failed(String error) {
1843 return 'Не удалось выгрузить модель: $error';
1844 }
1845
1846 @override
1847 String get unload_from_server => 'Выгрузить с сервера';
1848
1849 @override
1850 String context_chip(String ctx) {
1851 return '$ctx ctx';
1852 }
1853
1854 @override
1855 String get unload_all_models => 'Выгрузить все модели';
1856
1857 @override
1858 String loaded_models_count(int count) {
1859 return 'Загружено моделей: $count';
1860 }
1861
1862 @override
1863 String get all_models_unloaded => 'Все модели выгружены';
1864
1865 @override
1866 String get branch_chat => 'Создать ветку чата';
1867
1868 @override
1869 String get branch_chat_desc => 'Создать новый чат на основе этого сообщения';
1870
1871 @override
1872 String get edit_assistant_message_desc =>
1873 'Редактировать текст сообщения ассистента';
1874
1875 @override
1876 String switch_to_model(String modelName, Object model) {
1877 return 'Переключить на модель $model';
1878 }
1879
1880 @override
1881 String download_notification_title(String modelName) {
1882 return 'Загрузка $modelName...';
1883 }
1884
1885 @override
1886 String get download_complete_notification => 'Загрузка завершена!';
1887
1888 @override
1889 String download_complete_body(String modelName) {
1890 return 'Модель $modelName успешно загружена.';
1891 }
1892
1893 @override
1894 String download_failed_notification(String error) {
1895 return 'Загрузка не удалась: $error';
1896 }
1897
1898 @override
1899 String download_failed_body(String modelName) {
1900 return 'Не удалось загрузить $modelName.';
1901 }
1902
1903 @override
1904 String get engine_name_system => 'Система ТТС';
1905
1906 @override
1907 String get engine_tagline_system => 'Встроенный движок устройства';
1908
1909 @override
1910 String get engine_name_kitten => 'Котенок ТТС';
1911
1912 @override
1913 String get engine_tagline_kitten => 'Высокоскоростная нейронная TTS';
1914
1915 @override
1916 String get engine_name_sherpa => 'Шерпа ОННКС ВИТС';
1917
1918 @override
1919 String get engine_tagline_sherpa => 'Оффлайн голоса Пайпер';
1920
1921 @override
1922 String get voice_jasper => 'Джаспер';
1923
1924 @override
1925 String get voice_bella => 'Белла';
1926
1927 @override
1928 String get voice_bruno => 'Бруно';
1929
1930 @override
1931 String get voice_luna => 'Луна';
1932
1933 @override
1934 String get voice_hugo => 'Хьюго';
1935
1936 @override
1937 String get voice_rosie => 'Рози';
1938
1939 @override
1940 String get voice_leo => 'Лео';
1941
1942 @override
1943 String get voice_kiki => 'Кики';
1944
1945 @override
1946 String get voice_lessac => 'Лессак (США)';
1947
1948 @override
1949 String get voice_ryan => 'Райан (США)';
1950
1951 @override
1952 String get model_qwen_3 => 'Квен 3 0.6Б';
1953
1954 @override
1955 String get model_qwen_3_desc =>
1956 'Самая маленькая модель чата общего назначения. Быстрые ответы, низкое использование памяти.';
1957
1958 @override
1959 String get model_license_apache => 'Апач-2.0';
1960
1961 @override
1962 String get model_qwen_25 => 'Квен 2.5 1.5B Инструктировать';
1963
1964 @override
1965 String get model_qwen_25_desc =>
1966 'Сбалансированное качество и размер. Подходит для общего разговора.';
1967
1968 @override
1969 String get model_deepseek => 'DeepSeek R1 Дистилл Qwen 1.5B';
1970
1971 @override
1972 String get model_deepseek_desc =>
1973 'Модель рассуждения и цепочки мыслей. Лучше всего подходит для логических задач.';
1974
1975 @override
1976 String get model_license_mit => 'Массачусетский технологический институт';
1977
1978 @override
1979 String get model_gemma => 'Джемма 4 E2B Инструктирует';
1980
1981 @override
1982 String get model_gemma_desc =>
1983 'Флагманская модель Google. Высочайшее качество, требует больше оперативной памяти.';
1984
1985 @override
1986 String export_header(String date) {
1987 return '*Экспортировано из LocalMind — $date*';
1988 }
1989
1990 @override
1991 String get export_role_user => '## 👤 Пользователь';
1992
1993 @override
1994 String get export_role_assistant => '## 🤖 Помощник';
1995
1996 @override
1997 String get export_role_system => '## ⚙️ Система';
1998
1999 @override
2000 String get export_role_tool => '## 🔧 Инструмент';
2001
2002 @override
2003 String get export_text_user => '[ПОЛЬЗОВАТЕЛЬ]';
2004
2005 @override
2006 String get export_text_assistant => '[ПОМОЩНИК]';
2007
2008 @override
2009 String get export_text_system => '[СИСТЕМА]';
2010
2011 @override
2012 String get export_text_tool => '[ИНСТРУМЕНТ]';
2013
2014 @override
2015 String get export_label_user => 'ПОЛЬЗОВАТЕЛЬ';
2016
2017 @override
2018 String get export_label_assistant => 'ПОМОЩНИК';
2019
2020 @override
2021 String get export_label_system => 'СИСТЕМА';
2022
2023 @override
2024 String get export_label_tool => 'ИНСТРУМЕНТ';
2025
2026 @override
2027 String get select_model_hint => 'Выберите модель, чтобы начать общение';
2028
2029 @override
2030 String get test_notification_title => 'Уведомление о тестировании';
2031
2032 @override
2033 String get test_notification_body =>
2034 'Это тестовое уведомление о ходе загрузки модели.';
2035
2036 @override
2037 String get tts_supports_background =>
2038 'Поддерживает фоновое воспроизведение как собственный звук';
2039
2040 @override
2041 String get tts_other_services_background_note =>
2042 'Примечание. Другие службы TTS поддерживают фоновое воспроизведение как собственный звук.';
2043
2044 @override
2045 String get gguf_imported_models_title => 'Импортированные модели GGUF';
2046
2047 @override
2048 String get gguf_imported_models_empty_subtitle =>
2049 'Импортируйте GGUF со своего устройства или добавьте его из Hugging Face. Импортированные модели запускаются локально с помощью llama.cpp.';
2050
2051 @override
2052 String get gguf_imported_models_ready =>
2053 'импортированные модели готовы для локального вывода.';
2054
2055 @override
2056 String get gguf_curated_models_subtitle =>
2057 'Рекомендуемые модели на устройстве, которые вы можете загружать и управлять ими внутри LocalMind.';
2058
2059 @override
2060 String get gguf_only_supported =>
2061 'Для этого импорта поддерживаются только модели GGUF.';
2062
2063 @override
2064 String get gguf_imported_from_local_file =>
2065 'импортировано из локального файла.';
2066
2067 @override
2068 String get gguf_import_failed => 'Не удалось импортировать модель GGUF.';
2069
2070 @override
2071 String get gguf_imported_from_huggingface => 'импортировано из Hugging Face.';
2072
2073 @override
2074 String get gguf_import_canceled => 'Импорт GGUF отменен.';
2075
2076 @override
2077 String get gguf_enter_huggingface_url =>
2078 'Введите URL-адрес GGUF «Обнимающее лицо».';
2079
2080 @override
2081 String get gguf_only_official_huggingface_urls =>
2082 'Поддерживаются только официальные URL-адреса Hugging Face GGUF.';
2083
2084 @override
2085 String get gguf_use_https_url =>
2086 'Используйте URL-адрес обнимающего лица HTTPS для импорта GGUF.';
2087
2088 @override
2089 String get gguf_url_must_point_to_file =>
2090 'URL-адрес «Обнимающего лица» должен указывать непосредственно на файл .gguf.';
2091
2092 @override
2093 String get gguf_unable_to_detect_file_name =>
2094 'Невозможно определить имя файла GGUF.';
2095
2096 @override
2097 String get gguf_download_empty =>
2098 'Загруженный файл GGUF был пуст или отсутствовал.';
2099
2100 @override
2101 String get gguf_selected_file_missing =>
2102 'Выбранный файл модели не существует.';
2103
2104 @override
2105 String get gguf_import_action => 'Импортировать GGUF';
2106
2107 @override
2108 String get gguf_overview_title => 'Принесите свои собственные модели GGUF';
2109
2110 @override
2111 String get gguf_overview_subtitle =>
2112 'Импортируйте .gguf из локального хранилища или загрузите его прямо с Hugging Face. Импортированные модели остаются на этом устройстве и загружаются с помощью llama.cpp.';
2113
2114 @override
2115 String get gguf_imported_count_label => 'импортированный';
2116
2117 @override
2118 String get gguf_local_files_label => 'локальные файлы';
2119
2120 @override
2121 String get gguf_huggingface_label => 'Обнимающее лицо';
2122
2123 @override
2124 String get gguf_import_local_title => 'Импортировать локальный GGUF';
2125
2126 @override
2127 String get gguf_import_local_subtitle =>
2128 'Скопируйте файл .gguf с этого устройства.';
2129
2130 @override
2131 String get gguf_import_huggingface_title => 'Импорт из «Обнимающего лица»';
2132
2133 @override
2134 String get gguf_import_huggingface_subtitle =>
2135 'Вставьте URL-адрес GGUF или путь к репозиторию.';
2136
2137 @override
2138 String get gguf_no_imported_title => 'Импортированных моделей GGUF пока нет.';
2139
2140 @override
2141 String get gguf_no_imported_subtitle =>
2142 'Вы можете перенести свой собственный файл GGUF из хранилища устройства или вставить URL-адрес Hugging Face или путь к репозиторию, указывающий на файл .gguf.';
2143
2144 @override
2145 String get gguf_import_huggingface_dialog_title =>
2146 'Импортировать GGUF из Hugging Face';
2147
2148 @override
2149 String get gguf_import_huggingface_dialog_subtitle =>
2150 'Вставьте прямой URL-адрес GGUF или путь репозитория Hugging Face, например `owner/repo/blob/main/model.gguf`. Ссылки на большие двоичные объекты преобразуются автоматически.';
2151
2152 @override
2153 String get gguf_url_or_repo_path => 'URL-адрес GGUF или путь к репозиторию';
2154
2155 @override
2156 String get paste => 'Вставить';
2157
2158 @override
2159 String get gguf_browse => 'Просмотр GGUF';
2160
2161 @override
2162 String get gguf_huggingface_token_ready => 'Жетон «Обнимающее лицо» готов.';
2163
2164 @override
2165 String get gguf_huggingface_token_optional =>
2166 'Токен необязателен, но рекомендуется';
2167
2168 @override
2169 String get gguf_huggingface_token_ready_desc =>
2170 'Ваш сохраненный токен будет автоматически использоваться для закрытых или частных репозиториев.';
2171
2172 @override
2173 String get gguf_huggingface_token_optional_desc =>
2174 'Требуется жетон «Обнимающее лицо». Добавьте его в настройках, если этот GGUF является закрытым или частным.';
2175
2176 @override
2177 String get gguf_downloading => 'Загрузка GGUF';
2178
2179 @override
2180 String get gguf_preparing => 'Подготовка';
2181
2182 @override
2183 String get gguf_preparing_download => 'Подготовка загрузки...';
2184
2185 @override
2186 String get gguf_cancel_import => 'Отменить импорт';
2187
2188 @override
2189 String get clipboard_empty => 'Буфер обмена пуст.';
2190
2191 @override
2192 String get could_not_open_huggingface =>
2193 'Не удалось открыть «Обнимающее лицо».';
2194
2195 @override
2196 String get gguf_paste_url_error =>
2197 'Вставьте URL-адрес GGUF Hugging Face или путь к репозиторию.';
2198
2199 @override
2200 String get gguf_blob_link => 'Ссылка на BLOB-объект';
2201
2202 @override
2203 String get gguf_repository_label => 'Репозиторий';
2204
2205 @override
2206 String get gguf_detected_path_label => 'Обнаруженный путь';
2207
2208 @override
2209 String get gguf_imported_section_label => 'Импортированный GGUF';
2210
2211 @override
2212 String get gguf_already_available => 'Уже доступно на этом устройстве';
2213
2214 @override
2215 String get gguf_curated_models_short => 'Кураторские модели на устройстве';
2216
2217 @override
2218 String get gguf_vision_projector => 'Vision Projector';
2219
2220 @override
2221 String get gguf_attach_projector => 'Attach Vision Projector';
2222
2223 @override
2224 String get gguf_change_projector => 'Change Vision Projector';
2225
2226 @override
2227 String get gguf_remove_projector => 'Remove Projector';
2228
2229 @override
2230 String get gguf_projector_attached =>
2231 'Vision projector attached successfully';
2232
2233 @override
2234 String get gguf_projector_removed => 'Vision projector removed';
2235
2236 @override
2237 String gguf_projector_auto_detected(String name) {
2238 return 'Auto-detected and linked vision projector: $name';
2239 }
2240
2241 @override
2242 String get gguf_is_projector_file =>
2243 'The selected file is a vision projector (mmproj), not a standalone model.';
2244
2245 @override
2246 String get gguf_projector_url_label =>
2247 'Vision Projector URL (optional mmproj)';
2248
2249 @override
2250 String get gguf_projector_url_hint =>
2251 'https://huggingface.co/.../mmproj-...gguf';
2252
2253 @override
2254 String get gguf_vision_not_supported_error =>
2255 'The active model does not support image attachments. Please attach a vision projector (mmproj) or select a vision-supported model.';
2256
2257 @override
2258 String get execute_tool_title => 'Выполнить инструмент';
2259
2260 @override
2261 String get execute_tool_request_desc =>
2262 'Модель запрашивает выполнение следующего инструмента:';
2263
2264 @override
2265 String get reject => 'Отклонять';
2266
2267 @override
2268 String get approve => 'Утвердить';
2269
2270 @override
2271 String get server_type_help =>
2272 'Прежде чем заполнять данные подключения, выберите провайдера.';
2273
2274 @override
2275 String get server_identity_title => 'Личность';
2276
2277 @override
2278 String get server_identity_desc =>
2279 'Назовите этот сервер и выберите, как он будет отображаться в списке.';
2280
2281 @override
2282 String get server_connection_title => 'Связь';
2283
2284 @override
2285 String get server_connection_desc =>
2286 'Используйте адрес и порт, предоставленные вашим сервером.';
2287
2288 @override
2289 String get server_authentication_title => 'Аутентификация';
2290
2291 @override
2292 String get server_authentication_required_desc =>
2293 'OpenRouter требует ключ API перед тестированием.';
2294
2295 @override
2296 String get server_authentication_required_desc_requesty =>
2297 'Requesty требует ключ API перед тестированием.';
2298
2299 @override
2300 String get server_authentication_optional_desc =>
2301 'Оставьте ключ API пустым, если этот сервер не требует его.';
2302
2303 @override
2304 String get mcp_tools_title => 'Инструменты MCP';
2305
2306 @override
2307 String get available_tools => 'Доступные инструменты';
2308
2309 @override
2310 String get unable_load_tools => 'Невозможно загрузить инструменты';
2311
2312 @override
2313 String get no_tools_registered => 'Инструменты не зарегистрированы';
2314
2315 @override
2316 String get no_tools_registered_desc =>
2317 'Включите пример сервера MCP или добавьте интеграцию MCP из настроек чата.';
2318
2319 @override
2320 String get example_mcp_server_title => 'Пример MCP-сервера';
2321
2322 @override
2323 String get example_mcp_server_desc =>
2324 'Регистрирует example.echo и example.word_count через того же поставщика инструментов MCP, который используется внешними серверами.';
2325
2326 @override
2327 String get disable_example_server => 'Отключить пример сервера';
2328
2329 @override
2330 String get enable_example_server => 'Включить пример сервера';
2331
2332 @override
2333 String get built_in_label => 'Встроенный';
2334
2335 @override
2336 String get highlights_label => 'Основные моменты';
2337
2338 @override
2339 String get built_with_label => 'Построен с';
2340
2341 @override
2342 String get local_label => 'Местный';
2343
2344 @override
2345 String get gguf_format_label => 'ГГУФ';
2346
2347 @override
2348 String get tool_status_requested => 'Запрошено';
2349
2350 @override
2351 String get tool_status_approved => 'Одобренный';
2352
2353 @override
2354 String get tool_status_rejected => 'Отклоненный';
2355
2356 @override
2357 String get tool_status_running => 'Бег';
2358
2359 @override
2360 String get tool_status_done => 'Сделанный';
2361
2362 @override
2363 String get tool_status_failed => 'Неуспешный';
2364
2365 @override
2366 String get model_favorite_toggle => 'Добавить в избранное';
2367
2368 @override
2369 String get model_set_default => 'Сделать модель по умолчанию';
2370
2371 @override
2372 String get model_clear_default => 'Убрать из моделей по умолчанию';
2373
2374 @override
2375 String get model_default_badge => 'По умолчанию';
2376
2377 @override
2378 String get model_note_label => 'Заметка';
2379
2380 @override
2381 String get model_note_hint => 'Добавить личную заметку для этой модели...';
2382
2383 @override
2384 String get unload_models_before_load => 'Выгружать модели перед загрузкой';
2385
2386 @override
2387 String get temp_chat_keyboard_incognito =>
2388 'Режим инкогнито клавиатуры во временном чате';
2389
2390 @override
2391 String get temp_chat_keyboard_incognito_desc =>
2392 'Запрашивать у клавиатуры системы не сохранять историю ввода во временных чатах';
2393
2394 @override
2395 String get resume_last_chat => 'Возобновить последний чат';
2396
2397 @override
2398 String get resume_last_chat_desc =>
2399 'Автоматически открывать последний активный чат при запуске';
2400
2401 @override
2402 String get export_all_data => 'Экспортировать все данные';
2403
2404 @override
2405 String get import_all_data => 'Импортировать все данные';
2406
2407 @override
2408 String get export_data_success => 'Данные успешно экспортированы';
2409
2410 @override
2411 String get import_data_success => 'Данные успешно импортированы';
2412
2413 @override
2414 String import_data_failed(String error) {
2415 return 'Не удалось импортировать данные';
2416 }
2417
2418 @override
2419 String get import_data_confirm =>
2420 'Это заменит все ваши текущие данные импортированными. Продолжить?';
2421
2422 @override
2423 String get import_settings_confirm =>
2424 'Это заменит ваши текущие настройки импортированными. Продолжить?';
2425
2426 @override
2427 String get export_conversations => 'Экспорт чатов';
2428
2429 @override
2430 String get import_conversations => 'Импорт чатов';
2431
2432 @override
2433 String get export_personas => 'Экспорт персонажей';
2434
2435 @override
2436 String get import_personas => 'Импорт персонажей';
2437
2438 @override
2439 String get export_settings => 'Экспорт настроек';
2440
2441 @override
2442 String get import_settings => 'Импорт настроек';
2443
2444 @override
2445 String get export_all_zip => 'Экспортировать все (ZIP)';
2446
2447 @override
2448 String get import_all_zip => 'Импортировать все (ZIP)';
2449
2450 @override
2451 String get duplicate_chat => 'Дублировать чат';
2452
2453 @override
2454 String get duplicate_chat_success => 'Чат успешно продублирован';
2455
2456 @override
2457 String get move_to_folder => 'Переместить в папку';
2458
2459 @override
2460 String get remove_from_folder => 'Удалить из папки';
2461
2462 @override
2463 String get create_folder => 'Создать папку';
2464
2465 @override
2466 String get new_folder => 'Новая папка';
2467
2468 @override
2469 String get folder_name_hint => 'Введите имя папки...';
2470
2471 @override
2472 String get all_chats => 'Все чаты';
2473
2474 @override
2475 String get unfiled_chats => 'Чаты без папки';
2476
2477 @override
2478 String get create => 'Создать';
2479
2480 @override
2481 String get server_path_prefix_label => 'Префикс пути сервера';
2482
2483 @override
2484 String get server_path_prefix_hint =>
2485 'Необязательный префикс для путей API сервера (например, /v1)';
2486
2487 @override
2488 String get search_message_contents => 'Поиск по тексту сообщений...';
2489
2490 @override
2491 String get message_search_results => 'Результаты поиска сообщений';
2492
2493 @override
2494 String get saved_messages_title => 'Сохраненные сообщения';
2495
2496 @override
2497 String get nav_saved_messages => 'Сохраненные сообщения';
2498
2499 @override
2500 String get saved_messages_empty => 'Нет сохраненных сообщений';
2501
2502 @override
2503 String get save_message => 'Сохранить сообщение';
2504
2505 @override
2506 String get message_saved => 'Сообщение сохранено';
2507
2508 @override
2509 String token_count(int count) {
2510 return 'Токенов: $count';
2511 }
2512
2513 @override
2514 String estimated_token_count(int count) {
2515 return 'Оценка токенов: $count';
2516 }
2517
2518 @override
2519 String get test_tts_section_title => 'Проверка озвучки текста';
2520
2521 @override
2522 String get test_tts_hint => 'Введите текст для проверки голоса...';
2523
2524 @override
2525 String get test_speak_button => 'Озвучить';
2526
2527 @override
2528 String get scroll_to_bottom => 'Прокрутить вниз';
2529
2530 @override
2531 String get generate_ai_response => 'Сгенерировать ответ ИИ';
2532
2533 @override
2534 String get no_response => 'Нет ответа';
2535
2536 @override
2537 String get export => 'Экспорт';
2538
2539 @override
2540 String get import => 'Импорт';
2541
2542 @override
2543 String get conversations_label => 'Чаты';
2544
2545 @override
2546 String get personas_label => 'Персонажи';
2547
2548 @override
2549 String get settings_label => 'Настройки';
2550
2551 @override
2552 String get export_conversation => 'Экспортировать чат';
2553
2554 @override
2555 String get tts_process_markdown => 'Обрабатывать Markdown';
2556
2557 @override
2558 String get tts_process_markdown_desc =>
2559 'Удалять форматирование вроде **жирного** перед озвучкой';
2560
2561 @override
2562 String get tts_skip_seconds => 'Секунды перемотки';
2563
2564 @override
2565 String get tts_skip_seconds_desc =>
2566 'Время для перемотки вперед/назад в аудиоплеере';
2567
2568 @override
2569 String tts_skip_seconds_value(int seconds) {
2570 return '$secondsс';
2571 }
2572
2573 @override
2574 String get preview_system_prompts => 'Предпросмотр системных промптов';
2575
2576 @override
2577 String get welcome_message_1 => 'Привет! Я твой локальный ИИ-ассистент.';
2578
2579 @override
2580 String get welcome_message_2 => 'Спрашивай о чем угодно — я готов к работе.';
2581
2582 @override
2583 String get welcome_message_3 =>
2584 'Твои данные обрабатываются локально и никогда не покидают устройство.';
2585
2586 @override
2587 String get welcome_message_4 =>
2588 'Для начала выбери модель на верхней панели или добавь новую в разделе управления моделями.';
2589
2590 @override
2591 String get temporary_chat => 'Временный чат';
2592
2593 @override
2594 String get temporary_chat_desc =>
2595 'Сообщения из этого чата не будут сохранены в истории';
2596
2597 @override
2598 String get temporary_chat_banner =>
2599 'Активен временный чат — история не сохраняется';
2600
2601 @override
2602 String get temporary_chat_save_warning_title => 'Сохранить временный чат?';
2603
2604 @override
2605 String get temporary_chat_save_warning_body =>
2606 'Этот чат не сохранен в истории. Хотите сохранить его сейчас?';
2607
2608 @override
2609 String get save_to_history => 'Сохранить в историю';
2610
2611 @override
2612 String get share_conversation => 'Поделиться чатом';
2613
2614 @override
2615 String get download_tts_audio => 'Скачать аудио';
2616
2617 @override
2618 String get tts_download_unavailable => 'Скачивание аудио недоступно';
2619
2620 @override
2621 String get tts_download_no_audio =>
2622 'Нет сгенерированного аудио для скачивания';
2623
2624 @override
2625 String get tts_download_success => 'Аудиофайл успешно сохранен';
2626
2627 @override
2628 String get return_to_chat => 'Вернуться в чат';
2629
2630 @override
2631 String get return_to_temp_chat => 'Вернуться во временный чат';
2632
2633 @override
2634 String get insert_saved_message => 'Вставить сохраненное сообщение';
2635
2636 @override
2637 String get insert_saved_message_desc =>
2638 'Добавить фрагмент из сохраненных сообщений в чат';
2639
2640 @override
2641 String get model_info => 'Информация о модели';
2642
2643 @override
2644 String get model_name => 'Имя модели';
2645
2646 @override
2647 String get model_identifier => 'Идентификатор модели';
2648
2649 @override
2650 String get model_capabilities => 'Возможности';
2651
2652 @override
2653 String get model_api_pricing => 'Цены на API (за 1 млн токенов)';
2654
2655 @override
2656 String get not_available => 'Недоступно';
2657
2658 @override
2659 String get save_message_folders => 'Сохранить в папки';
2660
2661 @override
2662 String get remove_from_saved => 'Удалить из сохраненных';
2663
2664 @override
2665 String get message_already_saved => 'Сообщение уже сохранено';
2666
2667 @override
2668 String get stream_ttft => 'Время до первого токена';
2669
2670 @override
2671 String get stream_tokens_per_sec => 'Токенов в секунду';
2672
2673 @override
2674 String get stream_stop_reason => 'Причина остановки';
2675
2676 @override
2677 String get stream_input_tokens => 'Входные токены';
2678
2679 @override
2680 String get stream_output_tokens => 'Выходные токены';
2681
2682 @override
2683 String get stream_generation_time => 'Время генерации';
2684
2685 @override
2686 String get attach_image => 'Прикрепить изображение';
2687
2688 @override
2689 String get attach_text_document => 'Прикрепить текстовый документ';
2690
2691 @override
2692 String get attach_shortcut_images => 'Фото';
2693
2694 @override
2695 String get attach_shortcut_documents => 'Файлы';
2696
2697 @override
2698 String get attach_shortcut_saved => 'Сохраненные';
2699
2700 @override
2701 String get add_attachment => 'Добавить вложение';
2702
2703 @override
2704 String get add_to_chat => 'Добавить в чат';
2705
2706 @override
2707 String get choose_what_to_attach => 'Что вы хотите добавить?';
2708
2709 @override
2710 String get choose_attachment_subtitle =>
2711 'Выберите источник, чтобы прикрепить к сообщению';
2712
2713 @override
2714 String get photo_permission_denied => 'Доступ к фото отклонен';
2715
2716 @override
2717 String get select_model_prompt => 'Выбрать модель';
2718
2719 @override
2720 String get characters_label => 'Символы';
2721
2722 @override
2723 String get exit_temporary_chat_title => 'Выйти из временного чата?';
2724
2725 @override
2726 String get exit_temporary_chat_body =>
2727 'Это навсегда удалит текущий чат. Продолжить?';
2728
2729 @override
2730 String get saved_message_temp_snap_unavailable =>
2731 'Снимки сообщений недоступны во временных чатах';
2732
2733 @override
2734 String get filter_title => 'Фильтр чатов';
2735
2736 @override
2737 String get filter_pinned => 'Закрепленные';
2738
2739 @override
2740 String get filter_archived => 'Архивные';
2741
2742 @override
2743 String get filter_temp_chats => 'Временные чаты';
2744
2745 @override
2746 String get filter_user_messages => 'Сообщения пользователя';
2747
2748 @override
2749 String get filter_assistant_messages => 'Сообщения ассистента';
2750
2751 @override
2752 String get archive_chat => 'Архивировать чат';
2753
2754 @override
2755 String get unarchive_chat => 'Разархивировать чат';
2756
2757 @override
2758 String conversation_message_count(int count) {
2759 return 'Сообщений: $count';
2760 }
2761
2762 @override
2763 String conversation_character_count(int count) {
2764 return 'Символов: $count';
2765 }
2766
2767 @override
2768 String get generate_title_with_ai => 'Создать заголовок с помощью ИИ';
2769
2770 @override
2771 String get generating_title => 'Создание заголовка...';
2772
2773 @override
2774 String get generate_title_failed => 'Не удалось создать заголовок';
2775
2776 @override
2777 String get lm_studio_model_browser_title => 'Обзор моделей';
2778
2779 @override
2780 String get lm_studio_model_search_hint => 'Поиск моделей...';
2781
2782 @override
2783 String get lm_studio_staff_picks => 'Выбор редакции';
2784
2785 @override
2786 String get lm_studio_community_models => 'Модели сообщества';
2787
2788 @override
2789 String get lm_studio_no_models => 'Модели не найдены';
2790
2791 @override
2792 String lm_studio_models_count(int count) {
2793 return 'Моделей: $count';
2794 }
2795
2796 @override
2797 String get lm_studio_browse_models => 'Найти модели в LM Studio';
2798
2799 @override
2800 String get lm_studio_model_search => 'Поиск моделей';
2801
2802 @override
2803 String get lm_studio_downloads_title => 'Загрузки';
2804
2805 @override
2806 String get lm_studio_choose_quant => 'Выбрать квантование';
2807
2808 @override
2809 String get lm_studio_use_default_quant =>
2810 'Использовать стандартное квантование';
2811
2812 @override
2813 String get lm_studio_recommended => 'Рекомендуется';
2814
2815 @override
2816 String get lm_studio_clear_downloads => 'Очистить завершенные загрузки';
2817
2818 @override
2819 String get lm_studio_no_downloads => 'Нет активных загрузок';
2820
2821 @override
2822 String get lm_studio_downloads_disclaimer =>
2823 'Загрузка моделей производится напрямую с Hugging Face.';
2824
2825 @override
2826 String get lm_studio_staff_pick => 'Рекомендуемая модель';
2827
2828 @override
2829 String get lm_studio_params => 'Параметры';
2830
2831 @override
2832 String get lm_studio_arch => 'Архитектура';
2833
2834 @override
2835 String get lm_studio_domain => 'Область применения';
2836
2837 @override
2838 String get lm_studio_format => 'Формат';
2839
2840 @override
2841 String get lm_studio_vision => 'Зрение';
2842
2843 @override
2844 String get lm_studio_tool_use => 'Вызов инструментов';
2845
2846 @override
2847 String get lm_studio_reasoning => 'Рассуждение';
2848
2849 @override
2850 String get openrouter_pricing_free => 'Бесплатно';
2851
2852 @override
2853 String openrouter_pricing_tooltip(String input, String output) {
2854 return 'Вход $input / Выход $output за 1 млн токенов';
2855 }
2856
2857 @override
2858 String get lm_studio_download_options => 'Параметры загрузки';
2859
2860 @override
2861 String get lm_studio_download => 'Скачать';
2862
2863 @override
2864 String lm_studio_download_size(String size) {
2865 return 'Размер файла';
2866 }
2867
2868 @override
2869 String lm_studio_downloading_percent(int percent) {
2870 return 'Загрузка: $percent%';
2871 }
2872
2873 @override
2874 String get lm_studio_readme_unavailable =>
2875 'README недоступен для этой модели.';
2876
2877 @override
2878 String get lm_studio_full_gpu_offload => 'Возможен полный перенос на GPU';
2879
2880 @override
2881 String get lm_studio_partial_gpu_offload =>
2882 'Возможен частичный перенос на GPU';
2883
2884 @override
2885 String get lm_studio_likely_too_large => 'Возможно, слишком велика';
2886
2887 @override
2888 String get lm_studio_available_ram_gb => 'Доступная ОЗУ (ГБ, необязательно)';
2889
2890 @override
2891 String get lm_studio_available_vram_gb =>
2892 'Доступная видеопамять (ГБ, необязательно)';
2893
2894 @override
2895 String get lm_studio_memory_settings_title => 'Память для рекомендаций';
2896
2897 @override
2898 String get lm_studio_memory_settings_desc =>
2899 'Используется для оценки того, подходят ли модели для вашего устройства.';
2900
2901 @override
2902 String get think_button_label => 'Мыслить';
2903
2904 @override
2905 String get thinking_mode_title => 'Режим мышления';
2906
2907 @override
2908 String get reasoning_effort_low => 'Низкая';
2909
2910 @override
2911 String get reasoning_effort_medium => 'Средняя';
2912
2913 @override
2914 String get reasoning_effort_high => 'Высокая';
2915
2916 @override
2917 String get reasoning_effort_minimal => 'Минимальный';
2918
2919 @override
2920 String get reasoning_effort_xhigh => 'Очень высокий';
2921
2922 @override
2923 String get reasoning_effort_max => 'Максимальный';
2924
2925 @override
2926 String get reasoning_effort_off => 'Выкл';
2927
2928 @override
2929 String get could_not_read_file => 'Не удалось прочитать файл';
2930
2931 @override
2932 String get server_offline => 'Сервер офлайн';
2933
2934 @override
2935 String get could_not_establish_connection =>
2936 'Не удалось подключиться к серверу. Убедитесь, что сервер запущен, а настройки хоста и порта указаны верно.';
2937
2938 @override
2939 String get retry_connection => 'Повторить подключение';
2940
2941 @override
2942 String get tokens_label => 'Токены';
2943
2944 @override
2945 String get enter_context_length => 'Введите длину контекста...';
2946
2947 @override
2948 String get openrouter_disclosure =>
2949 'Подключая этого поставщика, ваши сообщения чата и вводные данные будут отправлены на их серверы. LocalMind не отслеживает и не хранит ваши разговоры.';
2950
2951 @override
2952 String get requesty_disclosure =>
2953 'Подключая этого поставщика, ваши сообщения чата и вводные данные будут отправлены на их серверы. LocalMind не отслеживает и не хранит ваши разговоры.';
2954
2955 @override
2956 String get welcome_message_cloud =>
2957 'Ваши сообщения отправляются вашему подключенному поставщику.';
2958
2959 @override
2960 String get privacy_policy => 'Политика конфиденциальности';
2961
2962 @override
2963 String get cloud_sync => 'Синхронизация S3';
2964
2965 @override
2966 String get cloud_sync_description =>
2967 'Сквозное шифрование и синхронизация с вашим S3-совместимым сервером';
2968
2969 @override
2970 String get cloud_sync_endpoint => 'URL-адрес сервера';
2971
2972 @override
2973 String get cloud_sync_bucket => 'Бакет';
2974
2975 @override
2976 String get cloud_sync_region => 'Регион';
2977
2978 @override
2979 String get cloud_sync_prefix => 'Префикс';
2980
2981 @override
2982 String get cloud_sync_access_key => 'ID ключа доступа';
2983
2984 @override
2985 String get cloud_sync_secret_key => 'Секретный ключ доступа';
2986
2987 @override
2988 String get cloud_sync_session_token => 'Токен сеанса (необязательно)';
2989
2990 @override
2991 String get cloud_sync_passphrase => 'Пароль шифрования';
2992
2993 @override
2994 String get cloud_sync_confirm_passphrase => 'Подтвердите пароль';
2995
2996 @override
2997 String get cloud_sync_path_style => 'Использовать адресацию по пути';
2998
2999 @override
3000 String get cloud_sync_allow_http => 'Разрешить небезопасный HTTP';
3001
3002 @override
3003 String get cloud_sync_http_warning =>
3004 'HTTP раскрывает сетевые метаданные и учётные данные. Используйте его только для доверенного локального S3-сервера.';
3005
3006 @override
3007 String get cloud_sync_test => 'Проверить подключение';
3008
3009 @override
3010 String get cloud_sync_enable => 'Включить зашифрованную синхронизацию';
3011
3012 @override
3013 String get cloud_sync_now => 'Синхронизировать сейчас';
3014
3015 @override
3016 String get cloud_sync_disconnect => 'Отключить это устройство';
3017
3018 @override
3019 String get cloud_sync_last_synced => 'Последняя синхронизация';
3020
3021 @override
3022 String get cloud_sync_never => 'Никогда';
3023
3024 @override
3025 String get cloud_sync_conflicts => 'Сохранённые конфликты';
3026
3027 @override
3028 String get cloud_sync_passphrase_mismatch => 'Пароли не совпадают';
3029
3030 @override
3031 String get crash_report_title => 'Что-то пошло не так';
3032
3033 @override
3034 String get crash_report_stack_trace => 'Трассировка стека';
3035
3036 @override
3037 String get crash_report_tap_to_expand => 'Нажмите, чтобы развернуть';
3038
3039 @override
3040 String get crash_report_button => 'Сообщить об этом сбое';
3041
3042 @override
3043 String get crash_try_again => 'Попробовать снова';
3044
3045 @override
3046 String get crash_report_empty_stack => '<пусто>';
3047
3048 @override
3049 String get crash_report_disclaimer =>
3050 'Отчёт откроет GitHub с уже заполненной диагностикой. Контроль остаётся за вами — ничего не отправляется автоматически. Перед отправкой проверьте и удалите конфиденциальные данные.';
3051
3052 @override
3053 String get crash_report_copied => 'Скопировано в буфер обмена';
3054
3055 @override
3056 String get report_a_problem => 'Сообщить о проблеме';
3057
3058 @override
3059 String get rename_folder => 'Переименовать папку';
3060
3061 @override
3062 String get delete_folder => 'Удалить папку';
3063
3064 @override
3065 String get delete_folder_title => 'Удалить папку?';
3066
3067 @override
3068 String delete_folder_body(String name) {
3069 return 'Удалить папку «$name»? Содержащиеся в ней беседы и сохранённые сообщения будут перенесены в «Без папки». Это действие нельзя отменить.';
3070 }
3071
3072 @override
3073 String get folder_name_required => 'Введите название папки';
3074
3075 @override
3076 String get model_required_toast => 'Сначала выберите модель';
3077
3078 @override
3079 String get settings_concise_voice_responses =>
3080 'Краткие ответы в голосовом режиме';
3081
3082 @override
3083 String get settings_concise_voice_responses_desc =>
3084 'Делайте ответы LLM короткими (1 короткий абзац) и задавайте уточняющие вопросы в голосовом режиме.';
3085
3086 @override
3087 String get s3_connection_succeeded => 'Подключение к S3 успешно.';
3088
3089 @override
3090 String failed_to_open_url(String error) {
3091 return 'Не удалось открыть URL: $error';
3092 }
3093
3094 @override
3095 String failed_to_copy(String error) {
3096 return 'Не удалось скопировать: $error';
3097 }
3098
3099 @override
3100 String get file_explorer_not_found =>
3101 'No file explorer found. Please make sure a file manager app is installed and enabled on your device.';
3102
3103 @override
3104 String export_data_failed(String error) {
3105 return 'Failed to export backup: $error';
3106 }
3107
3108 @override
3109 String file_pick_failed(String error) {
3110 return 'Failed to select file: $error';
3111 }
3112
3113 @override
3114 String image_pick_failed(String error) {
3115 return 'Failed to select image: $error';
3116 }
3117
3118 @override
3119 String get calendar_access => 'Calendar Access';
3120
3121 @override
3122 String get calendar_access_desc =>
3123 'Allow AI to read and create calendar events';
3124
3125 @override
3126 String get calendar_permission_denied =>
3127 'Calendar permission denied. Please grant calendar access in your device settings.';
3128
3129 @override
3130 String get location_access => 'Location Access';
3131
3132 @override
3133 String get location_access_desc =>
3134 'Allow AI to get your current location with place name';
3135
3136 @override
3137 String get location_permission_denied =>
3138 'Location permission denied. Please grant location access in your device settings.';
3139
3140 @override
3141 String get builtin_ai_not_supported =>
3142 'Built-in AI is not supported on this device.';
3143
3144 @override
3145 String get builtin_ai_unsupported_desc =>
3146 'Your device hardware or OS does not support on-device system AI (e.g. Gemini Nano / Apple Intelligence). Please choose a downloadable model instead.';
3147
3148 @override
3149 String get builtin_ai_unsupported_chip => 'Not Supported';
3150
3151 @override
3152 String get builtin_ai_enable => 'Enable';
3153
3154 @override
3155 String get model_reasoning_default => 'По умолчанию для модели';
3156
3157 @override
3158 String get model_reasoning_on => 'Вкл.';
3159
3160 @override
3161 String get model_reasoning_help =>
3162 'Применяется к следующему ответу. Выключение отключает рассуждения, если это поддерживается шаблоном чата модели.';
3163
3164 @override
3165 String get model_reasoning_save_error =>
3166 'Не удалось сохранить режим рассуждений. Попробуйте ещё раз.';
3167
3168 @override
3169 String get on_device_engine_failed_error =>
3170 'Локальная модель перестала отвечать — обычно потому, что диалог превысил окно контекста. Модель перезагружается. Попробуйте снова, начните новый чат или увеличьте длину контекста в настройках.';
3171
3172 @override
3173 String get stt_error_no_match =>
3174 'Речь не распознана. Нажмите, чтобы попробовать снова.';
3175
3176 @override
3177 String get stt_error_speech_timeout =>
3178 'Речь не обнаружена. Нажмите, чтобы попробовать снова.';
3179
3180 @override
3181 String get stt_error_permission => 'Доступ к микрофону запрещён.';
3182
3183 @override
3184 String get stt_error_busy => 'Распознавание речи занято. Попробуйте снова.';
3185
3186 @override
3187 String get stt_error_network =>
3188 'Ошибка сети. Проверьте подключение и попробуйте снова.';
3189
3190 @override
3191 String get stt_error_audio => 'Ошибка записи звука. Проверьте микрофон.';
3192
3193 @override
3194 String get stt_error_client =>
3195 'Не удалось запустить службу распознавания речи. Убедитесь, что установлено приложение голосового ввода и оно выбрано распознавателем речи по умолчанию, затем попробуйте снова.';
3196
3197 @override
3198 String get stt_error_language =>
3199 'Распознаватель речи на этом устройстве не поддерживает ваш язык.';
3200
3201 @override
3202 String get stt_error_unavailable =>
3203 'На устройстве не найдена служба распознавания речи. Установите приложение голосового ввода (например, FUTO Voice Input) и выберите его распознавателем речи по умолчанию.';
3204
3205 @override
3206 String stt_error_generic(String code) {
3207 return 'Ошибка распознавания речи: $code';
3208 }
3209
3210 @override
3211 String get send_temperature_to_api => 'Отправлять температуру';
3212
3213 @override
3214 String get send_top_p_to_api => 'Отправлять Top P';
3215
3216 @override
3217 String get send_sampling_params_desc =>
3218 'Отключите для провайдеров или моделей, которые не принимают этот параметр (например, некоторых моделей рассуждения). Действует для всех чатов с удалёнными серверами.';
3219
3220 @override
3221 String get default_system_prompt => 'Системный промпт по умолчанию';
3222
3223 @override
3224 String get default_system_prompt_desc =>
3225 'Используется в чатах без персоны и без собственного системного промпта.';
3226
3227 @override
3228 String get default_system_prompt_hint => 'Ты полезный ассистент…';
3229
3230 @override
3231 String background_generation_notice(String title) {
3232 return 'Ответ в «$title» ещё генерируется. Отправить здесь можно будет после завершения. Нажмите, чтобы открыть.';
3233 }
3234
3235 @override
3236 String get background_generation_notice_untitled =>
3237 'Другой чат ещё генерирует ответ. Отправить здесь можно будет после завершения. Нажмите, чтобы открыть.';
3238
3239 @override
3240 String background_generation_notice_info(String title) {
3241 return 'Ответ в «$title» генерируется в фоне. Нажмите, чтобы открыть.';
3242 }
3243
3244 @override
3245 String get background_generation_notice_info_untitled =>
3246 'Другой чат отвечает в фоне. Нажмите, чтобы открыть.';
3247
3248 @override
3249 String background_generation_notice_multiple(int count) {
3250 return '$count чатов отвечают в фоне.';
3251 }
3252
3253 @override
3254 String get background_generation_chat_untitled => 'Чат без названия';
3255 }