| 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 | } |