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