| 1 | import 'dart:async'; |
| 2 | |
| 3 | import 'package:flutter/foundation.dart'; |
| 4 | import 'package:flutter/widgets.dart'; |
| 5 | import 'package:flutter_localizations/flutter_localizations.dart'; |
| 6 | import 'package:intl/intl.dart' as intl; |
| 7 | |
| 8 | import 'app_localizations_ar.dart'; |
| 9 | import 'app_localizations_bn.dart'; |
| 10 | import 'app_localizations_de.dart'; |
| 11 | import 'app_localizations_en.dart'; |
| 12 | import 'app_localizations_es.dart'; |
| 13 | import 'app_localizations_fr.dart'; |
| 14 | import 'app_localizations_hi.dart'; |
| 15 | import 'app_localizations_it.dart'; |
| 16 | import 'app_localizations_ja.dart'; |
| 17 | import 'app_localizations_ko.dart'; |
| 18 | import 'app_localizations_pt.dart'; |
| 19 | import 'app_localizations_ru.dart'; |
| 20 | import 'app_localizations_tr.dart'; |
| 21 | import 'app_localizations_zh.dart'; |
| 22 | |
| 23 | // ignore_for_file: type=lint |
| 24 | |
| 25 | /// Callers can lookup localized strings with an instance of AppLocalizations |
| 26 | /// returned by `AppLocalizations.of(context)`. |
| 27 | /// |
| 28 | /// Applications need to include `AppLocalizations.delegate()` in their app's |
| 29 | /// `localizationDelegates` list, and the locales they support in the app's |
| 30 | /// `supportedLocales` list. For example: |
| 31 | /// |
| 32 | /// ```dart |
| 33 | /// import 'l10n/app_localizations.dart'; |
| 34 | /// |
| 35 | /// return MaterialApp( |
| 36 | /// localizationsDelegates: AppLocalizations.localizationsDelegates, |
| 37 | /// supportedLocales: AppLocalizations.supportedLocales, |
| 38 | /// home: MyApplicationHome(), |
| 39 | /// ); |
| 40 | /// ``` |
| 41 | /// |
| 42 | /// ## Update pubspec.yaml |
| 43 | /// |
| 44 | /// Please make sure to update your pubspec.yaml to include the following |
| 45 | /// packages: |
| 46 | /// |
| 47 | /// ```yaml |
| 48 | /// dependencies: |
| 49 | /// # Internationalization support. |
| 50 | /// flutter_localizations: |
| 51 | /// sdk: flutter |
| 52 | /// intl: any # Use the pinned version from flutter_localizations |
| 53 | /// |
| 54 | /// # Rest of dependencies |
| 55 | /// ``` |
| 56 | /// |
| 57 | /// ## iOS Applications |
| 58 | /// |
| 59 | /// iOS applications define key application metadata, including supported |
| 60 | /// locales, in an Info.plist file that is built into the application bundle. |
| 61 | /// To configure the locales supported by your app, you’ll need to edit this |
| 62 | /// file. |
| 63 | /// |
| 64 | /// First, open your project’s ios/Runner.xcworkspace Xcode workspace file. |
| 65 | /// Then, in the Project Navigator, open the Info.plist file under the Runner |
| 66 | /// project’s Runner folder. |
| 67 | /// |
| 68 | /// Next, select the Information Property List item, select Add Item from the |
| 69 | /// Editor menu, then select Localizations from the pop-up menu. |
| 70 | /// |
| 71 | /// Select and expand the newly-created Localizations item then, for each |
| 72 | /// locale your application supports, add a new item and select the locale |
| 73 | /// you wish to add from the pop-up menu in the Value field. This list should |
| 74 | /// be consistent with the languages listed in the AppLocalizations.supportedLocales |
| 75 | /// property. |
| 76 | abstract class AppLocalizations { |
| 77 | AppLocalizations(String locale) |
| 78 | : localeName = intl.Intl.canonicalizedLocale(locale.toString()); |
| 79 | |
| 80 | final String localeName; |
| 81 | |
| 82 | static AppLocalizations? of(BuildContext context) { |
| 83 | return Localizations.of<AppLocalizations>(context, AppLocalizations); |
| 84 | } |
| 85 | |
| 86 | static const LocalizationsDelegate<AppLocalizations> delegate = |
| 87 | _AppLocalizationsDelegate(); |
| 88 | |
| 89 | /// A list of this localizations delegate along with the default localizations |
| 90 | /// delegates. |
| 91 | /// |
| 92 | /// Returns a list of localizations delegates containing this delegate along with |
| 93 | /// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, |
| 94 | /// and GlobalWidgetsLocalizations.delegate. |
| 95 | /// |
| 96 | /// Additional delegates can be added by appending to this list in |
| 97 | /// MaterialApp. This list does not have to be used at all if a custom list |
| 98 | /// of delegates is preferred or required. |
| 99 | static const List<LocalizationsDelegate<dynamic>> localizationsDelegates = |
| 100 | <LocalizationsDelegate<dynamic>>[ |
| 101 | delegate, |
| 102 | GlobalMaterialLocalizations.delegate, |
| 103 | GlobalCupertinoLocalizations.delegate, |
| 104 | GlobalWidgetsLocalizations.delegate, |
| 105 | ]; |
| 106 | |
| 107 | /// A list of this localizations delegate's supported locales. |
| 108 | static const List<Locale> supportedLocales = <Locale>[ |
| 109 | Locale('ar'), |
| 110 | Locale('bn'), |
| 111 | Locale('de'), |
| 112 | Locale('en'), |
| 113 | Locale('es'), |
| 114 | Locale('fr'), |
| 115 | Locale('hi'), |
| 116 | Locale('it'), |
| 117 | Locale('ja'), |
| 118 | Locale('ko'), |
| 119 | Locale('pt'), |
| 120 | Locale('ru'), |
| 121 | Locale('tr'), |
| 122 | Locale('zh'), |
| 123 | Locale('zh', 'TW'), |
| 124 | ]; |
| 125 | |
| 126 | /// Application display name |
| 127 | /// |
| 128 | /// In en, this message translates to: |
| 129 | /// **'LocalMind'** |
| 130 | String get app_name; |
| 131 | |
| 132 | /// Application tagline shown in settings and splash |
| 133 | /// |
| 134 | /// In en, this message translates to: |
| 135 | /// **'Your AI. Your Device. Your Rules.'** |
| 136 | String get app_tagline; |
| 137 | |
| 138 | /// Application version number |
| 139 | /// |
| 140 | /// In en, this message translates to: |
| 141 | /// **'1.0.0'** |
| 142 | String get app_version; |
| 143 | |
| 144 | /// Generic cancel button label |
| 145 | /// |
| 146 | /// In en, this message translates to: |
| 147 | /// **'Cancel'** |
| 148 | String get cancel; |
| 149 | |
| 150 | /// Generic confirm button label |
| 151 | /// |
| 152 | /// In en, this message translates to: |
| 153 | /// **'Confirm'** |
| 154 | String get confirm; |
| 155 | |
| 156 | /// Generic delete button label |
| 157 | /// |
| 158 | /// In en, this message translates to: |
| 159 | /// **'Delete'** |
| 160 | String get delete; |
| 161 | |
| 162 | /// Generic save button label |
| 163 | /// |
| 164 | /// In en, this message translates to: |
| 165 | /// **'Save'** |
| 166 | String get save; |
| 167 | |
| 168 | /// Generic retry button label |
| 169 | /// |
| 170 | /// In en, this message translates to: |
| 171 | /// **'Retry'** |
| 172 | String get retry; |
| 173 | |
| 174 | /// Generic close button label |
| 175 | /// |
| 176 | /// In en, this message translates to: |
| 177 | /// **'Close'** |
| 178 | String get close; |
| 179 | |
| 180 | /// Generic done button label |
| 181 | /// |
| 182 | /// In en, this message translates to: |
| 183 | /// **'Done'** |
| 184 | String get done; |
| 185 | |
| 186 | /// Generic continue button label |
| 187 | /// |
| 188 | /// In en, this message translates to: |
| 189 | /// **'Continue'** |
| 190 | String get continue_action; |
| 191 | |
| 192 | /// Generic skip button label |
| 193 | /// |
| 194 | /// In en, this message translates to: |
| 195 | /// **'Skip'** |
| 196 | String get skip; |
| 197 | |
| 198 | /// Install action button |
| 199 | /// |
| 200 | /// In en, this message translates to: |
| 201 | /// **'Install'** |
| 202 | String get install; |
| 203 | |
| 204 | /// Download action button |
| 205 | /// |
| 206 | /// In en, this message translates to: |
| 207 | /// **'Download'** |
| 208 | String get download; |
| 209 | |
| 210 | /// Resume download button |
| 211 | /// |
| 212 | /// In en, this message translates to: |
| 213 | /// **'Resume'** |
| 214 | String get resume; |
| 215 | |
| 216 | /// Pause download button |
| 217 | /// |
| 218 | /// In en, this message translates to: |
| 219 | /// **'Pause'** |
| 220 | String get pause; |
| 221 | |
| 222 | /// Stop action button |
| 223 | /// |
| 224 | /// In en, this message translates to: |
| 225 | /// **'Stop'** |
| 226 | String get stop; |
| 227 | |
| 228 | /// Edit action label |
| 229 | /// |
| 230 | /// In en, this message translates to: |
| 231 | /// **'Edit'** |
| 232 | String get edit; |
| 233 | |
| 234 | /// Preview action label |
| 235 | /// |
| 236 | /// In en, this message translates to: |
| 237 | /// **'Preview'** |
| 238 | String get preview; |
| 239 | |
| 240 | /// Unload model action |
| 241 | /// |
| 242 | /// In en, this message translates to: |
| 243 | /// **'Unload'** |
| 244 | String get unload; |
| 245 | |
| 246 | /// Load model action |
| 247 | /// |
| 248 | /// In en, this message translates to: |
| 249 | /// **'Load'** |
| 250 | String get load; |
| 251 | |
| 252 | /// Rename action label |
| 253 | /// |
| 254 | /// In en, this message translates to: |
| 255 | /// **'Rename'** |
| 256 | String get rename; |
| 257 | |
| 258 | /// Pin conversation action |
| 259 | /// |
| 260 | /// In en, this message translates to: |
| 261 | /// **'Pin'** |
| 262 | String get pin; |
| 263 | |
| 264 | /// Unpin conversation action |
| 265 | /// |
| 266 | /// In en, this message translates to: |
| 267 | /// **'Unpin'** |
| 268 | String get unpin; |
| 269 | |
| 270 | /// Share action label |
| 271 | /// |
| 272 | /// In en, this message translates to: |
| 273 | /// **'Share'** |
| 274 | String get share; |
| 275 | |
| 276 | /// Copy action label |
| 277 | /// |
| 278 | /// In en, this message translates to: |
| 279 | /// **'Copy'** |
| 280 | String get copy; |
| 281 | |
| 282 | /// Copied confirmation text |
| 283 | /// |
| 284 | /// In en, this message translates to: |
| 285 | /// **'Copied!'** |
| 286 | String get copied; |
| 287 | |
| 288 | /// Snackbar message after copy |
| 289 | /// |
| 290 | /// In en, this message translates to: |
| 291 | /// **'Copied to clipboard'** |
| 292 | String get copied_to_clipboard; |
| 293 | |
| 294 | /// Select action button |
| 295 | /// |
| 296 | /// In en, this message translates to: |
| 297 | /// **'Select'** |
| 298 | String get select; |
| 299 | |
| 300 | /// Active status badge |
| 301 | /// |
| 302 | /// In en, this message translates to: |
| 303 | /// **'Active'** |
| 304 | String get active; |
| 305 | |
| 306 | /// All filter label |
| 307 | /// |
| 308 | /// In en, this message translates to: |
| 309 | /// **'All'** |
| 310 | String get all; |
| 311 | |
| 312 | /// No selection label |
| 313 | /// |
| 314 | /// In en, this message translates to: |
| 315 | /// **'None'** |
| 316 | String get none; |
| 317 | |
| 318 | /// Dropdown placeholder when nothing selected |
| 319 | /// |
| 320 | /// In en, this message translates to: |
| 321 | /// **'None selected'** |
| 322 | String get none_selected; |
| 323 | |
| 324 | /// Connection status online |
| 325 | /// |
| 326 | /// In en, this message translates to: |
| 327 | /// **'Online'** |
| 328 | String get online; |
| 329 | |
| 330 | /// Server connection status when actively connected |
| 331 | /// |
| 332 | /// In en, this message translates to: |
| 333 | /// **'Connected'** |
| 334 | String get connected; |
| 335 | |
| 336 | /// Server connection status while being tested |
| 337 | /// |
| 338 | /// In en, this message translates to: |
| 339 | /// **'Checking'** |
| 340 | String get checking; |
| 341 | |
| 342 | /// Connection status offline |
| 343 | /// |
| 344 | /// In en, this message translates to: |
| 345 | /// **'Offline'** |
| 346 | String get offline; |
| 347 | |
| 348 | /// Error status text |
| 349 | /// |
| 350 | /// In en, this message translates to: |
| 351 | /// **'Error'** |
| 352 | String get error; |
| 353 | |
| 354 | /// Fallback unknown error message |
| 355 | /// |
| 356 | /// In en, this message translates to: |
| 357 | /// **'Unknown error'** |
| 358 | String get unknown_error; |
| 359 | |
| 360 | /// Dismiss action for notifications |
| 361 | /// |
| 362 | /// In en, this message translates to: |
| 363 | /// **'Not Now'** |
| 364 | String get not_now; |
| 365 | |
| 366 | /// Enable action button |
| 367 | /// |
| 368 | /// In en, this message translates to: |
| 369 | /// **'Enable'** |
| 370 | String get enable; |
| 371 | |
| 372 | /// Proceed despite warning |
| 373 | /// |
| 374 | /// In en, this message translates to: |
| 375 | /// **'Proceed Anyway'** |
| 376 | String get proceed_anyway; |
| 377 | |
| 378 | /// Button to test server connection |
| 379 | /// |
| 380 | /// In en, this message translates to: |
| 381 | /// **'Test Connection'** |
| 382 | String get test_connection; |
| 383 | |
| 384 | /// Button label while testing connection |
| 385 | /// |
| 386 | /// In en, this message translates to: |
| 387 | /// **'Testing...'** |
| 388 | String get testing; |
| 389 | |
| 390 | /// Connection test success message |
| 391 | /// |
| 392 | /// In en, this message translates to: |
| 393 | /// **'Connection successful!'** |
| 394 | String get connection_successful; |
| 395 | |
| 396 | /// Connection test failure message |
| 397 | /// |
| 398 | /// In en, this message translates to: |
| 399 | /// **'Connection failed. Check your settings.'** |
| 400 | String get connection_failed; |
| 401 | |
| 402 | /// Save and proceed button |
| 403 | /// |
| 404 | /// In en, this message translates to: |
| 405 | /// **'Save & Continue'** |
| 406 | String get save_continue; |
| 407 | |
| 408 | /// Save changes button |
| 409 | /// |
| 410 | /// In en, this message translates to: |
| 411 | /// **'Save Changes'** |
| 412 | String get save_changes; |
| 413 | |
| 414 | /// Complete onboarding button |
| 415 | /// |
| 416 | /// In en, this message translates to: |
| 417 | /// **'Finish Setup'** |
| 418 | String get finish_setup; |
| 419 | |
| 420 | /// Button to start a new chat |
| 421 | /// |
| 422 | /// In en, this message translates to: |
| 423 | /// **'Start New Chat'** |
| 424 | String get start_new_chat; |
| 425 | |
| 426 | /// Warning for destructive actions |
| 427 | /// |
| 428 | /// In en, this message translates to: |
| 429 | /// **'This action cannot be undone.'** |
| 430 | String get cannot_undo; |
| 431 | |
| 432 | /// RAM warning dialog title |
| 433 | /// |
| 434 | /// In en, this message translates to: |
| 435 | /// **'RAM Warning'** |
| 436 | String get ram_warning; |
| 437 | |
| 438 | /// Recommended badge on model cards |
| 439 | /// |
| 440 | /// In en, this message translates to: |
| 441 | /// **'RECOMMENDED'** |
| 442 | String get recommended; |
| 443 | |
| 444 | /// Warning when model may exceed device RAM |
| 445 | /// |
| 446 | /// In en, this message translates to: |
| 447 | /// **'May be too large for this device'** |
| 448 | String get may_be_large; |
| 449 | |
| 450 | /// ETA placeholder during download |
| 451 | /// |
| 452 | /// In en, this message translates to: |
| 453 | /// **'Calculating...'** |
| 454 | String get calculating; |
| 455 | |
| 456 | /// Download failure status |
| 457 | /// |
| 458 | /// In en, this message translates to: |
| 459 | /// **'Download failed'** |
| 460 | String get download_failed; |
| 461 | |
| 462 | /// Download completed status |
| 463 | /// |
| 464 | /// In en, this message translates to: |
| 465 | /// **'Downloaded'** |
| 466 | String get downloaded; |
| 467 | |
| 468 | /// Model not yet downloaded |
| 469 | /// |
| 470 | /// In en, this message translates to: |
| 471 | /// **'Not downloaded'** |
| 472 | String get not_downloaded; |
| 473 | |
| 474 | /// Installed status |
| 475 | /// |
| 476 | /// In en, this message translates to: |
| 477 | /// **'Installed'** |
| 478 | String get installed; |
| 479 | |
| 480 | /// Not installed status |
| 481 | /// |
| 482 | /// In en, this message translates to: |
| 483 | /// **'Not installed'** |
| 484 | String get not_installed; |
| 485 | |
| 486 | /// Generic loading indicator text |
| 487 | /// |
| 488 | /// In en, this message translates to: |
| 489 | /// **'Loading...'** |
| 490 | String get loading; |
| 491 | |
| 492 | /// Model thinking indicator |
| 493 | /// |
| 494 | /// In en, this message translates to: |
| 495 | /// **'Thinking'** |
| 496 | String get thinking; |
| 497 | |
| 498 | /// Processing indicator text |
| 499 | /// |
| 500 | /// In en, this message translates to: |
| 501 | /// **'Processing...'** |
| 502 | String get processing; |
| 503 | |
| 504 | /// Initializing status |
| 505 | /// |
| 506 | /// In en, this message translates to: |
| 507 | /// **'Initializing...'** |
| 508 | String get initializing; |
| 509 | |
| 510 | /// Ready status text |
| 511 | /// |
| 512 | /// In en, this message translates to: |
| 513 | /// **'Ready'** |
| 514 | String get ready; |
| 515 | |
| 516 | /// Bootstrap stage message |
| 517 | /// |
| 518 | /// In en, this message translates to: |
| 519 | /// **'Preparing app...'** |
| 520 | String get preparing_app; |
| 521 | |
| 522 | /// Bootstrap stage message |
| 523 | /// |
| 524 | /// In en, this message translates to: |
| 525 | /// **'Initializing services...'** |
| 526 | String get initializing_services; |
| 527 | |
| 528 | /// Bootstrap stage message |
| 529 | /// |
| 530 | /// In en, this message translates to: |
| 531 | /// **'Configuring server...'** |
| 532 | String get configuring_server; |
| 533 | |
| 534 | /// Bootstrap error message |
| 535 | /// |
| 536 | /// In en, this message translates to: |
| 537 | /// **'Startup failed'** |
| 538 | String get startup_failed; |
| 539 | |
| 540 | /// Generic error heading on bootstrap screen |
| 541 | /// |
| 542 | /// In en, this message translates to: |
| 543 | /// **'Something went wrong'** |
| 544 | String get something_went_wrong; |
| 545 | |
| 546 | /// Delete model dialog title |
| 547 | /// |
| 548 | /// In en, this message translates to: |
| 549 | /// **'Delete Model'** |
| 550 | String get delete_model_title; |
| 551 | |
| 552 | /// Delete model confirmation dialog body |
| 553 | /// |
| 554 | /// In en, this message translates to: |
| 555 | /// **'Are you sure you want to delete {name}?'** |
| 556 | String delete_model_body(String name); |
| 557 | |
| 558 | /// Delete model dialog body with size info |
| 559 | /// |
| 560 | /// In en, this message translates to: |
| 561 | /// **'Are you sure you want to delete {name}? This will free up approximately {size} of space.\n\nYou can download this model again later if needed.'** |
| 562 | String delete_model_body_with_size(String name, String size); |
| 563 | |
| 564 | /// Delete voice confirmation dialog title |
| 565 | /// |
| 566 | /// In en, this message translates to: |
| 567 | /// **'Delete Voice'** |
| 568 | String get delete_voice_title; |
| 569 | |
| 570 | /// Delete voice confirmation dialog body |
| 571 | /// |
| 572 | /// In en, this message translates to: |
| 573 | /// **'Are you sure you want to delete {name}? This will free up approximately {size} of space.\n\nYou can download this voice again later if needed.'** |
| 574 | String delete_voice_body(String name, String size); |
| 575 | |
| 576 | /// Delete server confirmation dialog title |
| 577 | /// |
| 578 | /// In en, this message translates to: |
| 579 | /// **'Delete Server'** |
| 580 | String get delete_server_title; |
| 581 | |
| 582 | /// Delete server confirmation body |
| 583 | /// |
| 584 | /// In en, this message translates to: |
| 585 | /// **'Are you sure you want to delete \"{name}\"? This cannot be undone.'** |
| 586 | String delete_server_body(String name); |
| 587 | |
| 588 | /// Delete conversation dialog title |
| 589 | /// |
| 590 | /// In en, this message translates to: |
| 591 | /// **'Delete conversation?'** |
| 592 | String get delete_conversation_title; |
| 593 | |
| 594 | /// Delete conversation dialog body |
| 595 | /// |
| 596 | /// In en, this message translates to: |
| 597 | /// **'Are you sure you want to delete \"{title}\"? This cannot be undone.'** |
| 598 | String delete_conversation_body(String title); |
| 599 | |
| 600 | /// Delete message dialog title |
| 601 | /// |
| 602 | /// In en, this message translates to: |
| 603 | /// **'Delete message?'** |
| 604 | String get delete_message_title; |
| 605 | |
| 606 | /// Delete persona dialog title |
| 607 | /// |
| 608 | /// In en, this message translates to: |
| 609 | /// **'Delete \"{name}\"?'** |
| 610 | String delete_persona_title(String name); |
| 611 | |
| 612 | /// Delete persona dialog body |
| 613 | /// |
| 614 | /// In en, this message translates to: |
| 615 | /// **'This cannot be undone.'** |
| 616 | String get delete_persona_body; |
| 617 | |
| 618 | /// Delete built-in persona dialog body |
| 619 | /// |
| 620 | /// In en, this message translates to: |
| 621 | /// **'This is a built-in persona. You can restore it later from Settings.'** |
| 622 | String get delete_builtin_persona_body; |
| 623 | |
| 624 | /// Settings action to re-add any deleted built-in personas |
| 625 | /// |
| 626 | /// In en, this message translates to: |
| 627 | /// **'Restore default personas'** |
| 628 | String get restore_builtin_personas; |
| 629 | |
| 630 | /// Settings description for restore built-in personas |
| 631 | /// |
| 632 | /// In en, this message translates to: |
| 633 | /// **'Re-add any built-in personas you\'ve deleted'** |
| 634 | String get restore_builtin_personas_desc; |
| 635 | |
| 636 | /// Snackbar after restoring built-in personas |
| 637 | /// |
| 638 | /// In en, this message translates to: |
| 639 | /// **'Default personas restored'** |
| 640 | String get restore_builtin_personas_success; |
| 641 | |
| 642 | /// Button to clear all selected personas in the picker |
| 643 | /// |
| 644 | /// In en, this message translates to: |
| 645 | /// **'Clear personas'** |
| 646 | String get clear_personas; |
| 647 | |
| 648 | /// Settings toggle to enable/disable automatic image compression |
| 649 | /// |
| 650 | /// In en, this message translates to: |
| 651 | /// **'Compress images before sending'** |
| 652 | String get enable_image_compression; |
| 653 | |
| 654 | /// Description for the image compression toggle |
| 655 | /// |
| 656 | /// In en, this message translates to: |
| 657 | /// **'Resize and compress attached images so uploads stay within server limits'** |
| 658 | String get enable_image_compression_desc; |
| 659 | |
| 660 | /// Label for the image compression level selector |
| 661 | /// |
| 662 | /// In en, this message translates to: |
| 663 | /// **'Compression aggressiveness'** |
| 664 | String get image_compression_level; |
| 665 | |
| 666 | /// Description for the image compression level selector |
| 667 | /// |
| 668 | /// In en, this message translates to: |
| 669 | /// **'Higher aggressiveness produces smaller uploads at lower quality'** |
| 670 | String get image_compression_level_desc; |
| 671 | |
| 672 | /// Low image compression aggressiveness |
| 673 | /// |
| 674 | /// In en, this message translates to: |
| 675 | /// **'Low'** |
| 676 | String get image_compression_level_low; |
| 677 | |
| 678 | /// Medium image compression aggressiveness |
| 679 | /// |
| 680 | /// In en, this message translates to: |
| 681 | /// **'Medium'** |
| 682 | String get image_compression_level_medium; |
| 683 | |
| 684 | /// High image compression aggressiveness |
| 685 | /// |
| 686 | /// In en, this message translates to: |
| 687 | /// **'High'** |
| 688 | String get image_compression_level_high; |
| 689 | |
| 690 | /// Tooltip for the model list sort button |
| 691 | /// |
| 692 | /// In en, this message translates to: |
| 693 | /// **'Sort models'** |
| 694 | String get sort_models_tooltip; |
| 695 | |
| 696 | /// Sort models with favorites first, then alphabetically |
| 697 | /// |
| 698 | /// In en, this message translates to: |
| 699 | /// **'Favorites first'** |
| 700 | String get sort_by_favorites; |
| 701 | |
| 702 | /// Sort models alphabetically by name |
| 703 | /// |
| 704 | /// In en, this message translates to: |
| 705 | /// **'Name (A-Z)'** |
| 706 | String get sort_by_name; |
| 707 | |
| 708 | /// Sort models by file size, smallest first |
| 709 | /// |
| 710 | /// In en, this message translates to: |
| 711 | /// **'Size (smallest first)'** |
| 712 | String get sort_by_size_smallest; |
| 713 | |
| 714 | /// Sort models by file size, largest first |
| 715 | /// |
| 716 | /// In en, this message translates to: |
| 717 | /// **'Size (largest first)'** |
| 718 | String get sort_by_size_largest; |
| 719 | |
| 720 | /// Sort models by max context length, largest first |
| 721 | /// |
| 722 | /// In en, this message translates to: |
| 723 | /// **'Context length'** |
| 724 | String get sort_by_context_length; |
| 725 | |
| 726 | /// Progress text while AI-renaming multiple conversations |
| 727 | /// |
| 728 | /// In en, this message translates to: |
| 729 | /// **'Renaming {done}/{total}...'** |
| 730 | String bulk_ai_rename_progress(int done, int total); |
| 731 | |
| 732 | /// Header shown in selection mode |
| 733 | /// |
| 734 | /// In en, this message translates to: |
| 735 | /// **'{count} selected'** |
| 736 | String selected_count(int count); |
| 737 | |
| 738 | /// Tooltip for bulk AI rename button |
| 739 | /// |
| 740 | /// In en, this message translates to: |
| 741 | /// **'Rename selected with AI'** |
| 742 | String get ai_rename_tooltip; |
| 743 | |
| 744 | /// Tooltip for the history screen new-chat FAB |
| 745 | /// |
| 746 | /// In en, this message translates to: |
| 747 | /// **'New chat in this folder'** |
| 748 | String get new_chat_in_folder_tooltip; |
| 749 | |
| 750 | /// Total token count shown under the chat text field |
| 751 | /// |
| 752 | /// In en, this message translates to: |
| 753 | /// **'{count} tokens'** |
| 754 | String total_tokens_count(int count); |
| 755 | |
| 756 | /// Settings toggle to include persona system prompt when generating smart reply suggestions |
| 757 | /// |
| 758 | /// In en, this message translates to: |
| 759 | /// **'Use persona in smart replies'** |
| 760 | String get smart_replies_use_persona; |
| 761 | |
| 762 | /// Description for the smart-replies-use-persona toggle |
| 763 | /// |
| 764 | /// In en, this message translates to: |
| 765 | /// **'Suggested replies match the tone of the active persona instead of a generic assistant'** |
| 766 | String get smart_replies_use_persona_desc; |
| 767 | |
| 768 | /// Settings toggle to not clear persona selection when starting a new chat |
| 769 | /// |
| 770 | /// In en, this message translates to: |
| 771 | /// **'Keep persona on new chat'** |
| 772 | String get keep_persona_on_new_chat; |
| 773 | |
| 774 | /// Description for the keep-persona-on-new-chat toggle |
| 775 | /// |
| 776 | /// In en, this message translates to: |
| 777 | /// **'Don\'t clear the selected persona(s) after starting a new chat'** |
| 778 | String get keep_persona_on_new_chat_desc; |
| 779 | |
| 780 | /// Settings toggle to show a button that lets the user send a message as the assistant role |
| 781 | /// |
| 782 | /// In en, this message translates to: |
| 783 | /// **'Show role-swap button'** |
| 784 | String get role_swap_button_enabled; |
| 785 | |
| 786 | /// Description for the role-swap-button-enabled toggle |
| 787 | /// |
| 788 | /// In en, this message translates to: |
| 789 | /// **'Show a button in the chat input to send your message as the assistant instead of the user, without generating a response'** |
| 790 | String get role_swap_button_enabled_desc; |
| 791 | |
| 792 | /// Tooltip for the role-swap button when it will send as the user role |
| 793 | /// |
| 794 | /// In en, this message translates to: |
| 795 | /// **'Send as user'** |
| 796 | String get send_as_user_tooltip; |
| 797 | |
| 798 | /// Tooltip for the role-swap button when it will send as the assistant role |
| 799 | /// |
| 800 | /// In en, this message translates to: |
| 801 | /// **'Send as assistant (no response)'** |
| 802 | String get send_as_assistant_tooltip; |
| 803 | |
| 804 | /// Tooltip shown for long-pressing the send button to insert a message without generating a response |
| 805 | /// |
| 806 | /// In en, this message translates to: |
| 807 | /// **'Insert without generating'** |
| 808 | String get insert_without_generating_tooltip; |
| 809 | |
| 810 | /// Title of the sheet shown when tapping the token usage indicator |
| 811 | /// |
| 812 | /// In en, this message translates to: |
| 813 | /// **'Token Usage'** |
| 814 | String get token_usage_title; |
| 815 | |
| 816 | /// Label for the total token count row in the token usage sheet |
| 817 | /// |
| 818 | /// In en, this message translates to: |
| 819 | /// **'Tokens used'** |
| 820 | String get total_tokens_label; |
| 821 | |
| 822 | /// Label for the percentage-of-context-length row in the token usage sheet |
| 823 | /// |
| 824 | /// In en, this message translates to: |
| 825 | /// **'Context used'** |
| 826 | String get usage_percent_label; |
| 827 | |
| 828 | /// Title for the copy-vs-share export choice dialog |
| 829 | /// |
| 830 | /// In en, this message translates to: |
| 831 | /// **'Export'** |
| 832 | String get export_choice_title; |
| 833 | |
| 834 | /// Body text for the copy-vs-share export choice dialog |
| 835 | /// |
| 836 | /// In en, this message translates to: |
| 837 | /// **'How would you like to export this?'** |
| 838 | String get export_choice_body; |
| 839 | |
| 840 | /// Button to copy export content to the clipboard |
| 841 | /// |
| 842 | /// In en, this message translates to: |
| 843 | /// **'Copy to Clipboard'** |
| 844 | String get copy_to_clipboard; |
| 845 | |
| 846 | /// Success message after bulk-exporting conversations |
| 847 | /// |
| 848 | /// In en, this message translates to: |
| 849 | /// **'Exported {count} conversations'** |
| 850 | String bulk_export_conversations_success(int count); |
| 851 | |
| 852 | /// Title for the bulk AI rename confirmation dialog |
| 853 | /// |
| 854 | /// In en, this message translates to: |
| 855 | /// **'Rename with AI?'** |
| 856 | String get bulk_ai_rename_confirm_title; |
| 857 | |
| 858 | /// Body text for the bulk AI rename confirmation dialog |
| 859 | /// |
| 860 | /// In en, this message translates to: |
| 861 | /// **'This will ask the AI to generate a new title for each of the {count} selected conversations, replacing their current titles. This can take a while and cannot be undone.'** |
| 862 | String bulk_ai_rename_confirm_body(int count); |
| 863 | |
| 864 | /// Sort history by last modified date |
| 865 | /// |
| 866 | /// In en, this message translates to: |
| 867 | /// **'Last modified'** |
| 868 | String get sort_by_modified_date; |
| 869 | |
| 870 | /// Sort history by creation date |
| 871 | /// |
| 872 | /// In en, this message translates to: |
| 873 | /// **'Date created'** |
| 874 | String get sort_by_created_date; |
| 875 | |
| 876 | /// Tooltip for the history sort button |
| 877 | /// |
| 878 | /// In en, this message translates to: |
| 879 | /// **'Sort'** |
| 880 | String get sort_title; |
| 881 | |
| 882 | /// Clear conversation dialog title |
| 883 | /// |
| 884 | /// In en, this message translates to: |
| 885 | /// **'Clear conversation?'** |
| 886 | String get clear_conversation_title; |
| 887 | |
| 888 | /// Clear conversation confirmation body |
| 889 | /// |
| 890 | /// In en, this message translates to: |
| 891 | /// **'This will delete all messages in this conversation.'** |
| 892 | String get clear_conversation_body; |
| 893 | |
| 894 | /// Clear action button |
| 895 | /// |
| 896 | /// In en, this message translates to: |
| 897 | /// **'Clear'** |
| 898 | String get clear; |
| 899 | |
| 900 | /// Completion status message |
| 901 | /// |
| 902 | /// In en, this message translates to: |
| 903 | /// **'{label} completed'** |
| 904 | String label_completed(String label); |
| 905 | |
| 906 | /// Error display with message |
| 907 | /// |
| 908 | /// In en, this message translates to: |
| 909 | /// **'Error: {error}'** |
| 910 | String error_with_message(String error); |
| 911 | |
| 912 | /// Audio preview failed message |
| 913 | /// |
| 914 | /// In en, this message translates to: |
| 915 | /// **'Preview failed: {error}'** |
| 916 | String preview_failed(String error); |
| 917 | |
| 918 | /// Model loading status |
| 919 | /// |
| 920 | /// In en, this message translates to: |
| 921 | /// **'Loading {modelId}...'** |
| 922 | String loading_model(String modelId); |
| 923 | |
| 924 | /// Model loaded status in settings |
| 925 | /// |
| 926 | /// In en, this message translates to: |
| 927 | /// **'Model loaded: {modelId} ({backend})'** |
| 928 | String model_loaded(String modelId, String backend); |
| 929 | |
| 930 | /// Status when no on-device model is loaded |
| 931 | /// |
| 932 | /// In en, this message translates to: |
| 933 | /// **'No model loaded. Tap \"Manage On-Device Models\" to download and load a model.'** |
| 934 | String get no_model_loaded; |
| 935 | |
| 936 | /// Model loading error status |
| 937 | /// |
| 938 | /// In en, this message translates to: |
| 939 | /// **'Error: {error}'** |
| 940 | String loading_model_error(String error); |
| 941 | |
| 942 | /// Delete conversation dialog title |
| 943 | /// |
| 944 | /// In en, this message translates to: |
| 945 | /// **'Delete conversation?'** |
| 946 | String get delete_conversation; |
| 947 | |
| 948 | /// Navigation item for chat history |
| 949 | /// |
| 950 | /// In en, this message translates to: |
| 951 | /// **'History'** |
| 952 | String get nav_history; |
| 953 | |
| 954 | /// Navigation item for servers |
| 955 | /// |
| 956 | /// In en, this message translates to: |
| 957 | /// **'Servers'** |
| 958 | String get nav_servers; |
| 959 | |
| 960 | /// Navigation item for local on-device models |
| 961 | /// |
| 962 | /// In en, this message translates to: |
| 963 | /// **'Local Models'** |
| 964 | String get nav_local_models; |
| 965 | |
| 966 | /// Navigation item for TTS models |
| 967 | /// |
| 968 | /// In en, this message translates to: |
| 969 | /// **'Text To Speech'** |
| 970 | String get nav_tts; |
| 971 | |
| 972 | /// Navigation item for personas |
| 973 | /// |
| 974 | /// In en, this message translates to: |
| 975 | /// **'Personas'** |
| 976 | String get nav_personas; |
| 977 | |
| 978 | /// Navigation item for settings |
| 979 | /// |
| 980 | /// In en, this message translates to: |
| 981 | /// **'Settings'** |
| 982 | String get nav_settings; |
| 983 | |
| 984 | /// Button to start a new chat |
| 985 | /// |
| 986 | /// In en, this message translates to: |
| 987 | /// **'New Chat'** |
| 988 | String get nav_new_chat; |
| 989 | |
| 990 | /// Search field placeholder for conversations |
| 991 | /// |
| 992 | /// In en, this message translates to: |
| 993 | /// **'Search conversations...'** |
| 994 | String get search_hint; |
| 995 | |
| 996 | /// Placeholder when no server is selected |
| 997 | /// |
| 998 | /// In en, this message translates to: |
| 999 | /// **'No server selected'** |
| 1000 | String get no_server_selected; |
| 1001 | |
| 1002 | /// Switch server sheet title |
| 1003 | /// |
| 1004 | /// In en, this message translates to: |
| 1005 | /// **'Switch Server'** |
| 1006 | String get switch_server; |
| 1007 | |
| 1008 | /// Switch server sheet subtitle |
| 1009 | /// |
| 1010 | /// In en, this message translates to: |
| 1011 | /// **'Choose a server to connect to'** |
| 1012 | String get switch_server_subtitle; |
| 1013 | |
| 1014 | /// Button to manage servers list |
| 1015 | /// |
| 1016 | /// In en, this message translates to: |
| 1017 | /// **'Manage Servers'** |
| 1018 | String get manage_servers; |
| 1019 | |
| 1020 | /// GitHub repo card title |
| 1021 | /// |
| 1022 | /// In en, this message translates to: |
| 1023 | /// **'Open Source'** |
| 1024 | String get open_source; |
| 1025 | |
| 1026 | /// GitHub repo card description |
| 1027 | /// |
| 1028 | /// In en, this message translates to: |
| 1029 | /// **'LocalMind is open source. Follow our progress or contribute on GitHub.'** |
| 1030 | String get open_source_desc; |
| 1031 | |
| 1032 | /// Button to star repo on GitHub |
| 1033 | /// |
| 1034 | /// In en, this message translates to: |
| 1035 | /// **'Star on GitHub'** |
| 1036 | String get star_on_github; |
| 1037 | |
| 1038 | /// Label for the decorative GitHub tile on onboarding |
| 1039 | /// |
| 1040 | /// In en, this message translates to: |
| 1041 | /// **'Add more'** |
| 1042 | String get add_more; |
| 1043 | |
| 1044 | /// Secondary label for the decorative GitHub tile on onboarding |
| 1045 | /// |
| 1046 | /// In en, this message translates to: |
| 1047 | /// **'on GitHub'** |
| 1048 | String get on_github; |
| 1049 | |
| 1050 | /// Snackbar text shown when opening the GitHub repo fails |
| 1051 | /// |
| 1052 | /// In en, this message translates to: |
| 1053 | /// **'Could not open GitHub.'** |
| 1054 | String get could_not_open_github; |
| 1055 | |
| 1056 | /// Settings screen title |
| 1057 | /// |
| 1058 | /// In en, this message translates to: |
| 1059 | /// **'Settings'** |
| 1060 | String get settings_title; |
| 1061 | |
| 1062 | /// Settings section header for appearance |
| 1063 | /// |
| 1064 | /// In en, this message translates to: |
| 1065 | /// **'Appearance'** |
| 1066 | String get settings_appearance; |
| 1067 | |
| 1068 | /// Settings section label for language selection |
| 1069 | /// |
| 1070 | /// In en, this message translates to: |
| 1071 | /// **'Language'** |
| 1072 | String get settings_language; |
| 1073 | |
| 1074 | /// Option to use the device's system language |
| 1075 | /// |
| 1076 | /// In en, this message translates to: |
| 1077 | /// **'System Default'** |
| 1078 | String get language_system_default; |
| 1079 | |
| 1080 | /// Settings section header for TTS |
| 1081 | /// |
| 1082 | /// In en, this message translates to: |
| 1083 | /// **'Text-to-Speech'** |
| 1084 | String get settings_tts; |
| 1085 | |
| 1086 | /// Settings section header for Android default assistant integration |
| 1087 | /// |
| 1088 | /// In en, this message translates to: |
| 1089 | /// **'Android Assistant'** |
| 1090 | String get settings_android_assistant; |
| 1091 | |
| 1092 | /// Title for the Android default assistant setting |
| 1093 | /// |
| 1094 | /// In en, this message translates to: |
| 1095 | /// **'Use LocalMind as your assistant'** |
| 1096 | String get assistant_default_title; |
| 1097 | |
| 1098 | /// Description for the Android default assistant setting |
| 1099 | /// |
| 1100 | /// In en, this message translates to: |
| 1101 | /// **'Launch voice mode with Android\'s assistant gesture or power-button shortcut.'** |
| 1102 | String get assistant_default_description; |
| 1103 | |
| 1104 | /// Status shown when LocalMind is the default Android assistant |
| 1105 | /// |
| 1106 | /// In en, this message translates to: |
| 1107 | /// **'Active'** |
| 1108 | String get assistant_status_active; |
| 1109 | |
| 1110 | /// Status shown when LocalMind can request the Android assistant role |
| 1111 | /// |
| 1112 | /// In en, this message translates to: |
| 1113 | /// **'Not active'** |
| 1114 | String get assistant_status_available; |
| 1115 | |
| 1116 | /// Status shown when assistant selection must be checked in Android settings |
| 1117 | /// |
| 1118 | /// In en, this message translates to: |
| 1119 | /// **'Check settings'** |
| 1120 | String get assistant_status_manual; |
| 1121 | |
| 1122 | /// Status shown when the Android assistant role is unavailable |
| 1123 | /// |
| 1124 | /// In en, this message translates to: |
| 1125 | /// **'Unavailable'** |
| 1126 | String get assistant_status_unsupported; |
| 1127 | |
| 1128 | /// Status shown while checking the Android assistant role |
| 1129 | /// |
| 1130 | /// In en, this message translates to: |
| 1131 | /// **'Checking…'** |
| 1132 | String get assistant_status_checking; |
| 1133 | |
| 1134 | /// Button that requests the Android default assistant role |
| 1135 | /// |
| 1136 | /// In en, this message translates to: |
| 1137 | /// **'Set as default assistant'** |
| 1138 | String get assistant_set_default; |
| 1139 | |
| 1140 | /// Button that opens Android assistant settings |
| 1141 | /// |
| 1142 | /// In en, this message translates to: |
| 1143 | /// **'Open Android assistant settings'** |
| 1144 | String get assistant_open_settings; |
| 1145 | |
| 1146 | /// Error shown when Android assistant settings cannot be opened |
| 1147 | /// |
| 1148 | /// In en, this message translates to: |
| 1149 | /// **'Could not open Android assistant settings.'** |
| 1150 | String assistant_error(Object error); |
| 1151 | |
| 1152 | /// Settings section header for behavior |
| 1153 | /// |
| 1154 | /// In en, this message translates to: |
| 1155 | /// **'Behavior'** |
| 1156 | String get settings_behavior; |
| 1157 | |
| 1158 | /// Settings section header for on-device |
| 1159 | /// |
| 1160 | /// In en, this message translates to: |
| 1161 | /// **'On-Device Inference'** |
| 1162 | String get settings_on_device; |
| 1163 | |
| 1164 | /// Settings section header for default server |
| 1165 | /// |
| 1166 | /// In en, this message translates to: |
| 1167 | /// **'Default Server'** |
| 1168 | String get settings_default_server; |
| 1169 | |
| 1170 | /// Settings section header for default persona |
| 1171 | /// |
| 1172 | /// In en, this message translates to: |
| 1173 | /// **'Default Persona'** |
| 1174 | String get settings_default_persona; |
| 1175 | |
| 1176 | /// Settings label for the default model used in new chats |
| 1177 | /// |
| 1178 | /// In en, this message translates to: |
| 1179 | /// **'Default Model'** |
| 1180 | String get settings_default_model; |
| 1181 | |
| 1182 | /// Helper text for the default model setting |
| 1183 | /// |
| 1184 | /// In en, this message translates to: |
| 1185 | /// **'Automatically selected when you start a new chat.'** |
| 1186 | String get settings_default_model_desc; |
| 1187 | |
| 1188 | /// Settings section header for privacy |
| 1189 | /// |
| 1190 | /// In en, this message translates to: |
| 1191 | /// **'Privacy'** |
| 1192 | String get settings_privacy; |
| 1193 | |
| 1194 | /// Settings section header for data management |
| 1195 | /// |
| 1196 | /// In en, this message translates to: |
| 1197 | /// **'Data Management'** |
| 1198 | String get settings_data_management; |
| 1199 | |
| 1200 | /// Settings section header for about |
| 1201 | /// |
| 1202 | /// In en, this message translates to: |
| 1203 | /// **'About'** |
| 1204 | String get settings_about; |
| 1205 | |
| 1206 | /// Theme selection label |
| 1207 | /// |
| 1208 | /// In en, this message translates to: |
| 1209 | /// **'Theme'** |
| 1210 | String get theme; |
| 1211 | |
| 1212 | /// System theme option |
| 1213 | /// |
| 1214 | /// In en, this message translates to: |
| 1215 | /// **'System'** |
| 1216 | String get theme_system; |
| 1217 | |
| 1218 | /// Light theme option |
| 1219 | /// |
| 1220 | /// In en, this message translates to: |
| 1221 | /// **'Light'** |
| 1222 | String get theme_light; |
| 1223 | |
| 1224 | /// Dark theme option |
| 1225 | /// |
| 1226 | /// In en, this message translates to: |
| 1227 | /// **'Dark'** |
| 1228 | String get theme_dark; |
| 1229 | |
| 1230 | /// Claude theme option |
| 1231 | /// |
| 1232 | /// In en, this message translates to: |
| 1233 | /// **'Claude'** |
| 1234 | String get theme_claude; |
| 1235 | |
| 1236 | /// Font size slider label |
| 1237 | /// |
| 1238 | /// In en, this message translates to: |
| 1239 | /// **'Font Size'** |
| 1240 | String get font_size; |
| 1241 | |
| 1242 | /// Font size setting description |
| 1243 | /// |
| 1244 | /// In en, this message translates to: |
| 1245 | /// **'Adjust text size in chat.'** |
| 1246 | String get font_size_desc; |
| 1247 | |
| 1248 | /// Font preview sample text |
| 1249 | /// |
| 1250 | /// In en, this message translates to: |
| 1251 | /// **'The quick brown fox jumps over the lazy dog.'** |
| 1252 | String get font_preview; |
| 1253 | |
| 1254 | /// Dark code theme dropdown label |
| 1255 | /// |
| 1256 | /// In en, this message translates to: |
| 1257 | /// **'Code Theme (Dark)'** |
| 1258 | String get code_theme_dark; |
| 1259 | |
| 1260 | /// Light code theme dropdown label |
| 1261 | /// |
| 1262 | /// In en, this message translates to: |
| 1263 | /// **'Code Theme (Light)'** |
| 1264 | String get code_theme_light; |
| 1265 | |
| 1266 | /// Code theme setting description |
| 1267 | /// |
| 1268 | /// In en, this message translates to: |
| 1269 | /// **'Choose syntax highlighting theme for code blocks.'** |
| 1270 | String get code_theme_desc; |
| 1271 | |
| 1272 | /// TTS engine dropdown label |
| 1273 | /// |
| 1274 | /// In en, this message translates to: |
| 1275 | /// **'TTS Engine'** |
| 1276 | String get tts_engine; |
| 1277 | |
| 1278 | /// System TTS engine option |
| 1279 | /// |
| 1280 | /// In en, this message translates to: |
| 1281 | /// **'System TTS'** |
| 1282 | String get tts_engine_system; |
| 1283 | |
| 1284 | /// Kitten TTS engine option |
| 1285 | /// |
| 1286 | /// In en, this message translates to: |
| 1287 | /// **'Kitten TTS'** |
| 1288 | String get tts_engine_kitten; |
| 1289 | |
| 1290 | /// Voice selection label |
| 1291 | /// |
| 1292 | /// In en, this message translates to: |
| 1293 | /// **'Voice'** |
| 1294 | String get voice; |
| 1295 | |
| 1296 | /// Female voice gender label |
| 1297 | /// |
| 1298 | /// In en, this message translates to: |
| 1299 | /// **'Female'** |
| 1300 | String get voice_female; |
| 1301 | |
| 1302 | /// Male voice gender label |
| 1303 | /// |
| 1304 | /// In en, this message translates to: |
| 1305 | /// **'Male'** |
| 1306 | String get voice_male; |
| 1307 | |
| 1308 | /// Other voice gender label |
| 1309 | /// |
| 1310 | /// In en, this message translates to: |
| 1311 | /// **'Other'** |
| 1312 | String get voice_other; |
| 1313 | |
| 1314 | /// TTS speed slider label |
| 1315 | /// |
| 1316 | /// In en, this message translates to: |
| 1317 | /// **'TTS Speed'** |
| 1318 | String get tts_speed; |
| 1319 | |
| 1320 | /// TTS speed setting description |
| 1321 | /// |
| 1322 | /// In en, this message translates to: |
| 1323 | /// **'Adjust the playback rate.'** |
| 1324 | String get tts_speed_desc; |
| 1325 | |
| 1326 | /// Button to manage TTS models |
| 1327 | /// |
| 1328 | /// In en, this message translates to: |
| 1329 | /// **'Manage TTS Models'** |
| 1330 | String get manage_tts_models; |
| 1331 | |
| 1332 | /// Button to manage on-device models |
| 1333 | /// |
| 1334 | /// In en, this message translates to: |
| 1335 | /// **'Manage On-Device Models'** |
| 1336 | String get manage_on_device_models; |
| 1337 | |
| 1338 | /// Toggle for on-device smart reply suggestions |
| 1339 | /// |
| 1340 | /// In en, this message translates to: |
| 1341 | /// **'On-Device Smart Replies'** |
| 1342 | String get enable_smart_reply; |
| 1343 | |
| 1344 | /// Settings toggle for AI-generated user message triggered by holding the send button |
| 1345 | /// |
| 1346 | /// In en, this message translates to: |
| 1347 | /// **'AI user message (hold send)'** |
| 1348 | String get ai_user_response_enabled; |
| 1349 | |
| 1350 | /// Description for the hold-to-generate-AI-user-message toggle |
| 1351 | /// |
| 1352 | /// In en, this message translates to: |
| 1353 | /// **'Hold the send button for 3 seconds to have the AI write and send your next message'** |
| 1354 | String get ai_user_response_enabled_desc; |
| 1355 | |
| 1356 | /// Tooltip for the AI user message button next to send |
| 1357 | /// |
| 1358 | /// In en, this message translates to: |
| 1359 | /// **'Generate user message with AI'** |
| 1360 | String get ai_user_response_tooltip; |
| 1361 | |
| 1362 | /// Toggle for streaming responses |
| 1363 | /// |
| 1364 | /// In en, this message translates to: |
| 1365 | /// **'Streaming Responses'** |
| 1366 | String get streaming_responses; |
| 1367 | |
| 1368 | /// Toggle for auto-generating conversation titles |
| 1369 | /// |
| 1370 | /// In en, this message translates to: |
| 1371 | /// **'Auto-generate Titles'** |
| 1372 | String get auto_generate_titles; |
| 1373 | |
| 1374 | /// Toggle for send on enter behavior |
| 1375 | /// |
| 1376 | /// In en, this message translates to: |
| 1377 | /// **'Send on Enter'** |
| 1378 | String get send_on_enter; |
| 1379 | |
| 1380 | /// Toggle for sending a default 'You are LocalMind' system prompt to the model when no persona is selected |
| 1381 | /// |
| 1382 | /// In en, this message translates to: |
| 1383 | /// **'Send Default System Prompt'** |
| 1384 | String get show_system_messages; |
| 1385 | |
| 1386 | /// Description for the send-default-system-prompt toggle |
| 1387 | /// |
| 1388 | /// In en, this message translates to: |
| 1389 | /// **'When no persona is selected, send a default assistant system prompt with each request'** |
| 1390 | String get show_system_messages_desc; |
| 1391 | |
| 1392 | /// Toggle for whether system-role messages are displayed as bubbles in the chat transcript |
| 1393 | /// |
| 1394 | /// In en, this message translates to: |
| 1395 | /// **'Show System Messages in Chat'** |
| 1396 | String get show_system_messages_in_chat; |
| 1397 | |
| 1398 | /// Description for the show-system-messages-in-chat toggle |
| 1399 | /// |
| 1400 | /// In en, this message translates to: |
| 1401 | /// **'Display system messages (e.g. from an imported backup) as visible bubbles in the conversation'** |
| 1402 | String get show_system_messages_in_chat_desc; |
| 1403 | |
| 1404 | /// Toggle for automatically collapsing reasoning bubbles after generation completes |
| 1405 | /// |
| 1406 | /// In en, this message translates to: |
| 1407 | /// **'Auto-collapse Thinking'** |
| 1408 | String get auto_collapse_thinking; |
| 1409 | |
| 1410 | /// Description for the auto-collapse thinking toggle |
| 1411 | /// |
| 1412 | /// In en, this message translates to: |
| 1413 | /// **'Automatically collapse reasoning process after response generation completes when a main answer is present'** |
| 1414 | String get auto_collapse_thinking_desc; |
| 1415 | |
| 1416 | /// Toggle for haptic feedback |
| 1417 | /// |
| 1418 | /// In en, this message translates to: |
| 1419 | /// **'Haptic Feedback'** |
| 1420 | String get haptic_feedback; |
| 1421 | |
| 1422 | /// Toggle for MCP feature |
| 1423 | /// |
| 1424 | /// In en, this message translates to: |
| 1425 | /// **'Enable MCP'** |
| 1426 | String get enable_mcp; |
| 1427 | |
| 1428 | /// Toggle for MCP default in new chats |
| 1429 | /// |
| 1430 | /// In en, this message translates to: |
| 1431 | /// **'New Chat MCP Default'** |
| 1432 | String get new_chat_mcp_default; |
| 1433 | |
| 1434 | /// Toggle for data indicator visibility |
| 1435 | /// |
| 1436 | /// In en, this message translates to: |
| 1437 | /// **'Show Data Indicator'** |
| 1438 | String get show_data_indicator; |
| 1439 | |
| 1440 | /// Privacy information text |
| 1441 | /// |
| 1442 | /// In en, this message translates to: |
| 1443 | /// **'\"LocalMind never sees your data\"'** |
| 1444 | String get privacy_info; |
| 1445 | |
| 1446 | /// Dangerous action button to clear all conversations |
| 1447 | /// |
| 1448 | /// In en, this message translates to: |
| 1449 | /// **'Delete All Conversations'** |
| 1450 | String get delete_all_conversations; |
| 1451 | |
| 1452 | /// Button to reset all settings |
| 1453 | /// |
| 1454 | /// In en, this message translates to: |
| 1455 | /// **'Reset Settings to Defaults'** |
| 1456 | String get reset_settings_defaults; |
| 1457 | |
| 1458 | /// Fallback chat screen title |
| 1459 | /// |
| 1460 | /// In en, this message translates to: |
| 1461 | /// **'LocalMind'** |
| 1462 | String get chat_title; |
| 1463 | |
| 1464 | /// Tooltip for chat parameters button |
| 1465 | /// |
| 1466 | /// In en, this message translates to: |
| 1467 | /// **'Chat Parameters'** |
| 1468 | String get chat_parameters_tooltip; |
| 1469 | |
| 1470 | /// Menu item to change persona |
| 1471 | /// |
| 1472 | /// In en, this message translates to: |
| 1473 | /// **'Change Persona'** |
| 1474 | String get change_persona; |
| 1475 | |
| 1476 | /// Menu item to set persona |
| 1477 | /// |
| 1478 | /// In en, this message translates to: |
| 1479 | /// **'Set Persona'** |
| 1480 | String get set_persona; |
| 1481 | |
| 1482 | /// Menu item to remove persona |
| 1483 | /// |
| 1484 | /// In en, this message translates to: |
| 1485 | /// **'Remove Persona'** |
| 1486 | String get remove_persona; |
| 1487 | |
| 1488 | /// Menu item to clear conversation |
| 1489 | /// |
| 1490 | /// In en, this message translates to: |
| 1491 | /// **'Clear Conversation'** |
| 1492 | String get clear_conversation; |
| 1493 | |
| 1494 | /// Connection error banner text |
| 1495 | /// |
| 1496 | /// In en, this message translates to: |
| 1497 | /// **'Connection error. Check your server.'** |
| 1498 | String get connection_error; |
| 1499 | |
| 1500 | /// Disconnected banner text |
| 1501 | /// |
| 1502 | /// In en, this message translates to: |
| 1503 | /// **'Disconnected from server.'** |
| 1504 | String get disconnected; |
| 1505 | |
| 1506 | /// Configure action button |
| 1507 | /// |
| 1508 | /// In en, this message translates to: |
| 1509 | /// **'Configure'** |
| 1510 | String get configure; |
| 1511 | |
| 1512 | /// Model selection placeholder |
| 1513 | /// |
| 1514 | /// In en, this message translates to: |
| 1515 | /// **'Select Model'** |
| 1516 | String get select_model; |
| 1517 | |
| 1518 | /// Persona selection sheet title |
| 1519 | /// |
| 1520 | /// In en, this message translates to: |
| 1521 | /// **'Select Persona'** |
| 1522 | String get select_persona; |
| 1523 | |
| 1524 | /// No description provided for @manage_personas. |
| 1525 | /// |
| 1526 | /// In en, this message translates to: |
| 1527 | /// **'Manage personas'** |
| 1528 | String get manage_personas; |
| 1529 | |
| 1530 | /// Hint in persona manager about combining personas |
| 1531 | /// |
| 1532 | /// In en, this message translates to: |
| 1533 | /// **'Select multiple personas in chat to stack their system prompts.'** |
| 1534 | String get personas_combine_hint; |
| 1535 | |
| 1536 | /// Empty state heading |
| 1537 | /// |
| 1538 | /// In en, this message translates to: |
| 1539 | /// **'Start a conversation'** |
| 1540 | String get start_conversation; |
| 1541 | |
| 1542 | /// Recent chats section label |
| 1543 | /// |
| 1544 | /// In en, this message translates to: |
| 1545 | /// **'Recent chats'** |
| 1546 | String get recent_chats; |
| 1547 | |
| 1548 | /// See all link text |
| 1549 | /// |
| 1550 | /// In en, this message translates to: |
| 1551 | /// **'See all'** |
| 1552 | String get see_all; |
| 1553 | |
| 1554 | /// Quick prompt chip text |
| 1555 | /// |
| 1556 | /// In en, this message translates to: |
| 1557 | /// **'Help me write a function'** |
| 1558 | String get quick_write; |
| 1559 | |
| 1560 | /// Quick prompt chip text |
| 1561 | /// |
| 1562 | /// In en, this message translates to: |
| 1563 | /// **'Explain this code'** |
| 1564 | String get quick_explain; |
| 1565 | |
| 1566 | /// Quick prompt chip text |
| 1567 | /// |
| 1568 | /// In en, this message translates to: |
| 1569 | /// **'Debug this for me'** |
| 1570 | String get quick_debug; |
| 1571 | |
| 1572 | /// Quick prompt chip text |
| 1573 | /// |
| 1574 | /// In en, this message translates to: |
| 1575 | /// **'How do I use async/await?'** |
| 1576 | String get quick_async; |
| 1577 | |
| 1578 | /// Corrupted chat error title |
| 1579 | /// |
| 1580 | /// In en, this message translates to: |
| 1581 | /// **'History Missing'** |
| 1582 | String get history_missing_title; |
| 1583 | |
| 1584 | /// Corrupted chat error description |
| 1585 | /// |
| 1586 | /// In en, this message translates to: |
| 1587 | /// **'Either the messages in this chat were deleted or the history record is corrupted.'** |
| 1588 | String get history_missing_desc; |
| 1589 | |
| 1590 | /// Button for debug details |
| 1591 | /// |
| 1592 | /// In en, this message translates to: |
| 1593 | /// **'Technical Details'** |
| 1594 | String get technical_details; |
| 1595 | |
| 1596 | /// Diagnostic label |
| 1597 | /// |
| 1598 | /// In en, this message translates to: |
| 1599 | /// **'Last Error:'** |
| 1600 | String get last_error; |
| 1601 | |
| 1602 | /// Button to copy debug info |
| 1603 | /// |
| 1604 | /// In en, this message translates to: |
| 1605 | /// **'Copy Info'** |
| 1606 | String get copy_info; |
| 1607 | |
| 1608 | /// Debug row label |
| 1609 | /// |
| 1610 | /// In en, this message translates to: |
| 1611 | /// **'Conversation ID'** |
| 1612 | String get conversation_id; |
| 1613 | |
| 1614 | /// Debug row label |
| 1615 | /// |
| 1616 | /// In en, this message translates to: |
| 1617 | /// **'Created At'** |
| 1618 | String get created_at; |
| 1619 | |
| 1620 | /// Debug row label |
| 1621 | /// |
| 1622 | /// In en, this message translates to: |
| 1623 | /// **'Expected Messages'** |
| 1624 | String get expected_messages; |
| 1625 | |
| 1626 | /// Debug dialog description |
| 1627 | /// |
| 1628 | /// In en, this message translates to: |
| 1629 | /// **'Diagnostic information to help identify synchronization issues.'** |
| 1630 | String get debug_dialog_desc; |
| 1631 | |
| 1632 | /// Chat input field hint |
| 1633 | /// |
| 1634 | /// In en, this message translates to: |
| 1635 | /// **'Ask anything'** |
| 1636 | String get chat_input_hint; |
| 1637 | |
| 1638 | /// Tooltip for send button |
| 1639 | /// |
| 1640 | /// In en, this message translates to: |
| 1641 | /// **'Send message'** |
| 1642 | String get send_message_tooltip; |
| 1643 | |
| 1644 | /// Tooltip for stop button |
| 1645 | /// |
| 1646 | /// In en, this message translates to: |
| 1647 | /// **'Stop generation'** |
| 1648 | String get stop_generation_tooltip; |
| 1649 | |
| 1650 | /// Tooltip for attach button |
| 1651 | /// |
| 1652 | /// In en, this message translates to: |
| 1653 | /// **'Attach images or text'** |
| 1654 | String get attach_images_tooltip; |
| 1655 | |
| 1656 | /// Tooltip for start listening button |
| 1657 | /// |
| 1658 | /// In en, this message translates to: |
| 1659 | /// **'Start listening'** |
| 1660 | String get start_listening_tooltip; |
| 1661 | |
| 1662 | /// Tooltip for stop listening button |
| 1663 | /// |
| 1664 | /// In en, this message translates to: |
| 1665 | /// **'Stop listening'** |
| 1666 | String get stop_listening_tooltip; |
| 1667 | |
| 1668 | /// Tool call label in chat bubble |
| 1669 | /// |
| 1670 | /// In en, this message translates to: |
| 1671 | /// **'Tool: {toolCallId}'** |
| 1672 | String tool_label(String toolCallId); |
| 1673 | |
| 1674 | /// Unknown tool call fallback |
| 1675 | /// |
| 1676 | /// In en, this message translates to: |
| 1677 | /// **'Tool: Unknown'** |
| 1678 | String get tool_unknown; |
| 1679 | |
| 1680 | /// Message actions sheet title |
| 1681 | /// |
| 1682 | /// In en, this message translates to: |
| 1683 | /// **'Message options'** |
| 1684 | String get message_options; |
| 1685 | |
| 1686 | /// Copy as markdown option |
| 1687 | /// |
| 1688 | /// In en, this message translates to: |
| 1689 | /// **'Copy as Markdown'** |
| 1690 | String get copy_markdown; |
| 1691 | |
| 1692 | /// Copied as markdown snackbar |
| 1693 | /// |
| 1694 | /// In en, this message translates to: |
| 1695 | /// **'Copied as Markdown'** |
| 1696 | String get copied_markdown; |
| 1697 | |
| 1698 | /// Read aloud action |
| 1699 | /// |
| 1700 | /// In en, this message translates to: |
| 1701 | /// **'Read Aloud'** |
| 1702 | String get read_aloud; |
| 1703 | |
| 1704 | /// Stop reading action |
| 1705 | /// |
| 1706 | /// In en, this message translates to: |
| 1707 | /// **'Stop Reading'** |
| 1708 | String get stop_reading; |
| 1709 | |
| 1710 | /// More actions label |
| 1711 | /// |
| 1712 | /// In en, this message translates to: |
| 1713 | /// **'More'** |
| 1714 | String get more; |
| 1715 | |
| 1716 | /// Character count display |
| 1717 | /// |
| 1718 | /// In en, this message translates to: |
| 1719 | /// **'{length} characters'** |
| 1720 | String character_count(int length); |
| 1721 | |
| 1722 | /// Edit message dialog title |
| 1723 | /// |
| 1724 | /// In en, this message translates to: |
| 1725 | /// **'Edit message'** |
| 1726 | String get edit_message; |
| 1727 | |
| 1728 | /// Edit message dialog description |
| 1729 | /// |
| 1730 | /// In en, this message translates to: |
| 1731 | /// **'Saving will remove the assistant response below and regenerate.'** |
| 1732 | String get edit_message_desc; |
| 1733 | |
| 1734 | /// Save and regenerate button |
| 1735 | /// |
| 1736 | /// In en, this message translates to: |
| 1737 | /// **'Save & regenerate'** |
| 1738 | String get save_regenerate; |
| 1739 | |
| 1740 | /// Chat settings sheet title |
| 1741 | /// |
| 1742 | /// In en, this message translates to: |
| 1743 | /// **'Chat Settings'** |
| 1744 | String get chat_settings_title; |
| 1745 | |
| 1746 | /// Reset to defaults button |
| 1747 | /// |
| 1748 | /// In en, this message translates to: |
| 1749 | /// **'Reset Defaults'** |
| 1750 | String get reset_defaults; |
| 1751 | |
| 1752 | /// Chat settings parameters tab |
| 1753 | /// |
| 1754 | /// In en, this message translates to: |
| 1755 | /// **'Parameters'** |
| 1756 | String get parameters_tab; |
| 1757 | |
| 1758 | /// Chat settings MCP tab |
| 1759 | /// |
| 1760 | /// In en, this message translates to: |
| 1761 | /// **'MCP'** |
| 1762 | String get mcp_tab; |
| 1763 | |
| 1764 | /// Temperature slider label |
| 1765 | /// |
| 1766 | /// In en, this message translates to: |
| 1767 | /// **'Temperature'** |
| 1768 | String get temperature; |
| 1769 | |
| 1770 | /// Temperature description |
| 1771 | /// |
| 1772 | /// In en, this message translates to: |
| 1773 | /// **'Controls randomness: Higher = Creative, Lower = Focused'** |
| 1774 | String get temperature_desc; |
| 1775 | |
| 1776 | /// Top P slider label |
| 1777 | /// |
| 1778 | /// In en, this message translates to: |
| 1779 | /// **'Top P'** |
| 1780 | String get top_p; |
| 1781 | |
| 1782 | /// Top P description |
| 1783 | /// |
| 1784 | /// In en, this message translates to: |
| 1785 | /// **'Nucleus sampling threshold'** |
| 1786 | String get top_p_desc; |
| 1787 | |
| 1788 | /// Max tokens input label |
| 1789 | /// |
| 1790 | /// In en, this message translates to: |
| 1791 | /// **'Max Tokens'** |
| 1792 | String get max_tokens; |
| 1793 | |
| 1794 | /// Max tokens description |
| 1795 | /// |
| 1796 | /// In en, this message translates to: |
| 1797 | /// **'Response limit'** |
| 1798 | String get max_tokens_desc; |
| 1799 | |
| 1800 | /// Context length input label |
| 1801 | /// |
| 1802 | /// In en, this message translates to: |
| 1803 | /// **'Context Length'** |
| 1804 | String get context_length; |
| 1805 | |
| 1806 | /// Context length description |
| 1807 | /// |
| 1808 | /// In en, this message translates to: |
| 1809 | /// **'History window'** |
| 1810 | String get context_length_desc; |
| 1811 | |
| 1812 | /// Warning when MCP is disabled |
| 1813 | /// |
| 1814 | /// In en, this message translates to: |
| 1815 | /// **'MCP is disabled globally. Enable it in Settings to use these features.'** |
| 1816 | String get mcp_disabled_warning; |
| 1817 | |
| 1818 | /// Toggle to enable MCP for current chat |
| 1819 | /// |
| 1820 | /// In en, this message translates to: |
| 1821 | /// **'Enable MCP for this chat'** |
| 1822 | String get mcp_enable_chat; |
| 1823 | |
| 1824 | /// Toggle for auto-executing tools |
| 1825 | /// |
| 1826 | /// In en, this message translates to: |
| 1827 | /// **'Auto-execute tools'** |
| 1828 | String get auto_execute_tools; |
| 1829 | |
| 1830 | /// Badge label for beta features |
| 1831 | /// |
| 1832 | /// In en, this message translates to: |
| 1833 | /// **'Beta'** |
| 1834 | String get beta_label; |
| 1835 | |
| 1836 | /// Badge label for experimental features |
| 1837 | /// |
| 1838 | /// In en, this message translates to: |
| 1839 | /// **'Experimental'** |
| 1840 | String get experimental_label; |
| 1841 | |
| 1842 | /// Section label for adding temp MCP server |
| 1843 | /// |
| 1844 | /// In en, this message translates to: |
| 1845 | /// **'Add Ephemeral MCP Server'** |
| 1846 | String get add_ephemeral_mcp; |
| 1847 | |
| 1848 | /// MCP label field placeholder |
| 1849 | /// |
| 1850 | /// In en, this message translates to: |
| 1851 | /// **'Label'** |
| 1852 | String get mcp_label_placeholder; |
| 1853 | |
| 1854 | /// MCP URL field placeholder |
| 1855 | /// |
| 1856 | /// In en, this message translates to: |
| 1857 | /// **'URL (https://...)'** |
| 1858 | String get mcp_url_placeholder; |
| 1859 | |
| 1860 | /// Active MCP integrations section |
| 1861 | /// |
| 1862 | /// In en, this message translates to: |
| 1863 | /// **'Active Integrations'** |
| 1864 | String get active_integrations; |
| 1865 | |
| 1866 | /// Button label to import MCP servers from JSON |
| 1867 | /// |
| 1868 | /// In en, this message translates to: |
| 1869 | /// **'Import JSON'** |
| 1870 | String get import_mcp_json; |
| 1871 | |
| 1872 | /// Dialog title for importing MCP JSON |
| 1873 | /// |
| 1874 | /// In en, this message translates to: |
| 1875 | /// **'Import MCP Config JSON'** |
| 1876 | String get import_mcp_json_dialog_title; |
| 1877 | |
| 1878 | /// Instructions for importing MCP JSON |
| 1879 | /// |
| 1880 | /// In en, this message translates to: |
| 1881 | /// **'Copy your mcpServers JSON directly from LM Studio (mcp.json) or paste a plugin array below:'** |
| 1882 | String get import_mcp_json_instructions; |
| 1883 | |
| 1884 | /// Placeholder for MCP JSON import field |
| 1885 | /// |
| 1886 | /// In en, this message translates to: |
| 1887 | /// **'Paste mcpServers JSON or plugin list here...'** |
| 1888 | String get import_mcp_json_placeholder; |
| 1889 | |
| 1890 | /// Toast message on successful MCP import |
| 1891 | /// |
| 1892 | /// In en, this message translates to: |
| 1893 | /// **'Successfully imported {count} integration(s)'** |
| 1894 | String mcp_import_success(int count); |
| 1895 | |
| 1896 | /// Toast message on failed MCP import |
| 1897 | /// |
| 1898 | /// In en, this message translates to: |
| 1899 | /// **'No valid MCP integrations found in JSON'** |
| 1900 | String get mcp_import_failed; |
| 1901 | |
| 1902 | /// Notification banner title |
| 1903 | /// |
| 1904 | /// In en, this message translates to: |
| 1905 | /// **'Enable Notifications'** |
| 1906 | String get enable_notifications; |
| 1907 | |
| 1908 | /// Notification banner subtitle |
| 1909 | /// |
| 1910 | /// In en, this message translates to: |
| 1911 | /// **'Get notified when models finish downloading.'** |
| 1912 | String get enable_notifications_desc; |
| 1913 | |
| 1914 | /// Chat history screen title |
| 1915 | /// |
| 1916 | /// In en, this message translates to: |
| 1917 | /// **'Chat History'** |
| 1918 | String get chat_history_title; |
| 1919 | |
| 1920 | /// Recent conversation timestamp |
| 1921 | /// |
| 1922 | /// In en, this message translates to: |
| 1923 | /// **'Just now'** |
| 1924 | String get conversation_just_now; |
| 1925 | |
| 1926 | /// Minutes ago timestamp |
| 1927 | /// |
| 1928 | /// In en, this message translates to: |
| 1929 | /// **'{minutes}m ago'** |
| 1930 | String conversation_minutes_ago(int minutes); |
| 1931 | |
| 1932 | /// Hours ago timestamp |
| 1933 | /// |
| 1934 | /// In en, this message translates to: |
| 1935 | /// **'{hours}h ago'** |
| 1936 | String conversation_hours_ago(int hours); |
| 1937 | |
| 1938 | /// Yesterday timestamp |
| 1939 | /// |
| 1940 | /// In en, this message translates to: |
| 1941 | /// **'Yesterday'** |
| 1942 | String get conversation_yesterday; |
| 1943 | |
| 1944 | /// Days ago timestamp |
| 1945 | /// |
| 1946 | /// In en, this message translates to: |
| 1947 | /// **'{days}d ago'** |
| 1948 | String conversation_days_ago(int days); |
| 1949 | |
| 1950 | /// Full date timestamp |
| 1951 | /// |
| 1952 | /// In en, this message translates to: |
| 1953 | /// **'{month}/{day}/{year}'** |
| 1954 | String conversation_date(int month, int day, int year); |
| 1955 | |
| 1956 | /// Options menu tooltip |
| 1957 | /// |
| 1958 | /// In en, this message translates to: |
| 1959 | /// **'Options'** |
| 1960 | String get options_tooltip; |
| 1961 | |
| 1962 | /// Search empty state |
| 1963 | /// |
| 1964 | /// In en, this message translates to: |
| 1965 | /// **'No results found'** |
| 1966 | String get no_results_found; |
| 1967 | |
| 1968 | /// Empty conversations state |
| 1969 | /// |
| 1970 | /// In en, this message translates to: |
| 1971 | /// **'No conversations yet'** |
| 1972 | String get no_conversations_yet; |
| 1973 | |
| 1974 | /// Search empty state subtitle |
| 1975 | /// |
| 1976 | /// In en, this message translates to: |
| 1977 | /// **'Try a different search term'** |
| 1978 | String get try_different_search; |
| 1979 | |
| 1980 | /// Empty state subtitle when no conversations |
| 1981 | /// |
| 1982 | /// In en, this message translates to: |
| 1983 | /// **'Start a new conversation'** |
| 1984 | String get start_new_conversation; |
| 1985 | |
| 1986 | /// Rename dialog title |
| 1987 | /// |
| 1988 | /// In en, this message translates to: |
| 1989 | /// **'Rename conversation'** |
| 1990 | String get rename_conversation; |
| 1991 | |
| 1992 | /// Rename text field hint |
| 1993 | /// |
| 1994 | /// In en, this message translates to: |
| 1995 | /// **'Enter new title'** |
| 1996 | String get enter_new_title; |
| 1997 | |
| 1998 | /// Pinned conversations section header |
| 1999 | /// |
| 2000 | /// In en, this message translates to: |
| 2001 | /// **'PINNED'** |
| 2002 | String get pinned_section; |
| 2003 | |
| 2004 | /// Today section header |
| 2005 | /// |
| 2006 | /// In en, this message translates to: |
| 2007 | /// **'TODAY'** |
| 2008 | String get today_section; |
| 2009 | |
| 2010 | /// Yesterday section header |
| 2011 | /// |
| 2012 | /// In en, this message translates to: |
| 2013 | /// **'YESTERDAY'** |
| 2014 | String get yesterday_section; |
| 2015 | |
| 2016 | /// Previous 7 days section header |
| 2017 | /// |
| 2018 | /// In en, this message translates to: |
| 2019 | /// **'PREVIOUS 7 DAYS'** |
| 2020 | String get previous_7_days; |
| 2021 | |
| 2022 | /// Previous 30 days section header |
| 2023 | /// |
| 2024 | /// In en, this message translates to: |
| 2025 | /// **'PREVIOUS 30 DAYS'** |
| 2026 | String get previous_30_days; |
| 2027 | |
| 2028 | /// Older conversations section header |
| 2029 | /// |
| 2030 | /// In en, this message translates to: |
| 2031 | /// **'OLDER'** |
| 2032 | String get older_section; |
| 2033 | |
| 2034 | /// Onboarding title to select application language |
| 2035 | /// |
| 2036 | /// In en, this message translates to: |
| 2037 | /// **'Choose Language'** |
| 2038 | String get onboarding_choose_language; |
| 2039 | |
| 2040 | /// Onboarding description for language selection |
| 2041 | /// |
| 2042 | /// In en, this message translates to: |
| 2043 | /// **'Select your preferred language. You can change this anytime in settings.'** |
| 2044 | String get onboarding_choose_language_desc; |
| 2045 | |
| 2046 | /// Onboarding screen branding text |
| 2047 | /// |
| 2048 | /// In en, this message translates to: |
| 2049 | /// **'LOCALMIND'** |
| 2050 | String get onboarding_localmind; |
| 2051 | |
| 2052 | /// Onboarding heading for server connection |
| 2053 | /// |
| 2054 | /// In en, this message translates to: |
| 2055 | /// **'Connect Your\nServer'** |
| 2056 | String get onboarding_connect_server; |
| 2057 | |
| 2058 | /// Onboarding server connection description |
| 2059 | /// |
| 2060 | /// In en, this message translates to: |
| 2061 | /// **'Connect to LM Studio, Ollama,\nOllama Cloud, or OpenRouter to\nstart your private AI experience.'** |
| 2062 | String get onboarding_connect_desc; |
| 2063 | |
| 2064 | /// Subtitle for the OpenAI compatible server card in onboarding |
| 2065 | /// |
| 2066 | /// In en, this message translates to: |
| 2067 | /// **'OpenAI-compatible API'** |
| 2068 | String get openai_compatible_api; |
| 2069 | |
| 2070 | /// Hint shown when a user enters an https URL for a local server |
| 2071 | /// |
| 2072 | /// In en, this message translates to: |
| 2073 | /// **'HTTPS requires SSL'** |
| 2074 | String get https_requires_ssl; |
| 2075 | |
| 2076 | /// Hint shown with the HTTPS warning chip |
| 2077 | /// |
| 2078 | /// In en, this message translates to: |
| 2079 | /// **'Most local setups use http://'** |
| 2080 | String get most_local_setups_use_http; |
| 2081 | |
| 2082 | /// Onboarding welcome message |
| 2083 | /// |
| 2084 | /// In en, this message translates to: |
| 2085 | /// **'Welcome to LocalMind'** |
| 2086 | String get onboarding_welcome; |
| 2087 | |
| 2088 | /// On-device server type card title |
| 2089 | /// |
| 2090 | /// In en, this message translates to: |
| 2091 | /// **'On-Device'** |
| 2092 | String get server_type_on_device; |
| 2093 | |
| 2094 | /// LM Studio server type card title |
| 2095 | /// |
| 2096 | /// In en, this message translates to: |
| 2097 | /// **'LM Studio'** |
| 2098 | String get server_type_lm_studio; |
| 2099 | |
| 2100 | /// Ollama server type card title |
| 2101 | /// |
| 2102 | /// In en, this message translates to: |
| 2103 | /// **'Ollama'** |
| 2104 | String get server_type_ollama; |
| 2105 | |
| 2106 | /// Ollama Cloud server type card title |
| 2107 | /// |
| 2108 | /// In en, this message translates to: |
| 2109 | /// **'Ollama Cloud'** |
| 2110 | String get server_type_ollama_cloud; |
| 2111 | |
| 2112 | /// Ollama Cloud server type card subtitle |
| 2113 | /// |
| 2114 | /// In en, this message translates to: |
| 2115 | /// **'CLOUD MANAGED'** |
| 2116 | String get server_type_ollama_cloud_sub; |
| 2117 | |
| 2118 | /// Ollama Cloud server type display |
| 2119 | /// |
| 2120 | /// In en, this message translates to: |
| 2121 | /// **'Ollama Cloud'** |
| 2122 | String get server_type_ollama_cloud_display; |
| 2123 | |
| 2124 | /// Ollama Cloud default address |
| 2125 | /// |
| 2126 | /// In en, this message translates to: |
| 2127 | /// **'ollama.com'** |
| 2128 | String get server_address_ollama_cloud; |
| 2129 | |
| 2130 | /// Disclosure shown when connecting to Ollama Cloud about data being sent to their servers |
| 2131 | /// |
| 2132 | /// In en, this message translates to: |
| 2133 | /// **'By connecting Ollama Cloud, your chat messages and inputs are sent to Ollama\'s managed servers for inference. LocalMind does not track or store your conversations. You can revoke this key any time at ollama.com/settings/keys.'** |
| 2134 | String get ollama_cloud_disclosure; |
| 2135 | |
| 2136 | /// Validation: API key required for Ollama Cloud |
| 2137 | /// |
| 2138 | /// In en, this message translates to: |
| 2139 | /// **'API Key required for Ollama Cloud'** |
| 2140 | String get api_key_required_ollama_cloud; |
| 2141 | |
| 2142 | /// Hint for the Ollama Cloud API key input |
| 2143 | /// |
| 2144 | /// In en, this message translates to: |
| 2145 | /// **'Paste your Ollama Cloud API key'** |
| 2146 | String get api_key_hint_ollama_cloud; |
| 2147 | |
| 2148 | /// Add server screen subtitle for Ollama Cloud |
| 2149 | /// |
| 2150 | /// In en, this message translates to: |
| 2151 | /// **'Connect to Ollama Cloud with an API key from ollama.com/settings/keys to access managed cloud models.'** |
| 2152 | String get add_server_ollama_cloud_subtitle; |
| 2153 | |
| 2154 | /// Add server screen subtitle for OpenRouter |
| 2155 | /// |
| 2156 | /// In en, this message translates to: |
| 2157 | /// **'Connect through OpenRouter with a valid API key and keep this profile ready for model routing.'** |
| 2158 | String get add_server_openrouter_subtitle; |
| 2159 | |
| 2160 | /// Add server screen subtitle for Requesty |
| 2161 | /// |
| 2162 | /// In en, this message translates to: |
| 2163 | /// **'Connect through Requesty with a valid API key and keep this profile ready for model routing.'** |
| 2164 | String get add_server_requesty_subtitle; |
| 2165 | |
| 2166 | /// Add server screen subtitle for endpoint-based servers |
| 2167 | /// |
| 2168 | /// In en, this message translates to: |
| 2169 | /// **'Configure a local or self-hosted endpoint, then verify the connection before saving.'** |
| 2170 | String get add_server_endpoint_subtitle; |
| 2171 | |
| 2172 | /// OpenRouter server type card title |
| 2173 | /// |
| 2174 | /// In en, this message translates to: |
| 2175 | /// **'OpenRouter'** |
| 2176 | String get server_type_openrouter; |
| 2177 | |
| 2178 | /// Requesty server type card title |
| 2179 | /// |
| 2180 | /// In en, this message translates to: |
| 2181 | /// **'Requesty'** |
| 2182 | String get server_type_requesty; |
| 2183 | |
| 2184 | /// OpenRouter server type card subtitle |
| 2185 | /// |
| 2186 | /// In en, this message translates to: |
| 2187 | /// **'UNIFIED CLOUD'** |
| 2188 | String get server_type_openrouter_sub; |
| 2189 | |
| 2190 | /// Requesty server type card subtitle |
| 2191 | /// |
| 2192 | /// In en, this message translates to: |
| 2193 | /// **'UNIFIED CLOUD'** |
| 2194 | String get server_type_requesty_sub; |
| 2195 | |
| 2196 | /// Onboarding ready status |
| 2197 | /// |
| 2198 | /// In en, this message translates to: |
| 2199 | /// **'READY TO CONTINUE'** |
| 2200 | String get ready_continue; |
| 2201 | |
| 2202 | /// Onboarding waiting status |
| 2203 | /// |
| 2204 | /// In en, this message translates to: |
| 2205 | /// **'WAITING FOR SELECTION'** |
| 2206 | String get waiting_selection; |
| 2207 | |
| 2208 | /// Onboarding setup screen title |
| 2209 | /// |
| 2210 | /// In en, this message translates to: |
| 2211 | /// **'Setup Connection'** |
| 2212 | String get setup_connection; |
| 2213 | |
| 2214 | /// Onboarding setup description |
| 2215 | /// |
| 2216 | /// In en, this message translates to: |
| 2217 | /// **'Configure your {server} server to start chatting.'** |
| 2218 | String setup_connection_desc(String server); |
| 2219 | |
| 2220 | /// Server name field label |
| 2221 | /// |
| 2222 | /// In en, this message translates to: |
| 2223 | /// **'Server Name'** |
| 2224 | String get server_name; |
| 2225 | |
| 2226 | /// Validation: name required |
| 2227 | /// |
| 2228 | /// In en, this message translates to: |
| 2229 | /// **'Name required'** |
| 2230 | String get name_required; |
| 2231 | |
| 2232 | /// Validation: max 50 chars |
| 2233 | /// |
| 2234 | /// In en, this message translates to: |
| 2235 | /// **'Max 50 characters'** |
| 2236 | String get name_max_50; |
| 2237 | |
| 2238 | /// Host field label |
| 2239 | /// |
| 2240 | /// In en, this message translates to: |
| 2241 | /// **'Host / IP Address'** |
| 2242 | String get host_label; |
| 2243 | |
| 2244 | /// Validation: host required |
| 2245 | /// |
| 2246 | /// In en, this message translates to: |
| 2247 | /// **'Host required'** |
| 2248 | String get host_required; |
| 2249 | |
| 2250 | /// Port field label |
| 2251 | /// |
| 2252 | /// In en, this message translates to: |
| 2253 | /// **'Port'** |
| 2254 | String get port_label; |
| 2255 | |
| 2256 | /// Validation: port required |
| 2257 | /// |
| 2258 | /// In en, this message translates to: |
| 2259 | /// **'Port required'** |
| 2260 | String get port_required; |
| 2261 | |
| 2262 | /// Validation: invalid port number |
| 2263 | /// |
| 2264 | /// In en, this message translates to: |
| 2265 | /// **'Must be a number'** |
| 2266 | String get port_invalid; |
| 2267 | |
| 2268 | /// Validation: port range |
| 2269 | /// |
| 2270 | /// In en, this message translates to: |
| 2271 | /// **'Enter a valid port (1-65535)'** |
| 2272 | String get port_range; |
| 2273 | |
| 2274 | /// Required API key label |
| 2275 | /// |
| 2276 | /// In en, this message translates to: |
| 2277 | /// **'API Key *'** |
| 2278 | String get api_key_required; |
| 2279 | |
| 2280 | /// Optional API key label |
| 2281 | /// |
| 2282 | /// In en, this message translates to: |
| 2283 | /// **'API Key (Optional)'** |
| 2284 | String get api_key_optional; |
| 2285 | |
| 2286 | /// Validation: API key for OpenRouter |
| 2287 | /// |
| 2288 | /// In en, this message translates to: |
| 2289 | /// **'API Key required for OpenRouter'** |
| 2290 | String get api_key_required_openrouter; |
| 2291 | |
| 2292 | /// Validation: API key for Requesty |
| 2293 | /// |
| 2294 | /// In en, this message translates to: |
| 2295 | /// **'API Key required for Requesty'** |
| 2296 | String get api_key_required_requesty; |
| 2297 | |
| 2298 | /// Validation: API key format |
| 2299 | /// |
| 2300 | /// In en, this message translates to: |
| 2301 | /// **'OpenRouter API keys start with sk-'** |
| 2302 | String get api_key_format; |
| 2303 | |
| 2304 | /// Server name field hint |
| 2305 | /// |
| 2306 | /// In en, this message translates to: |
| 2307 | /// **'My Server'** |
| 2308 | String get my_server_hint; |
| 2309 | |
| 2310 | /// Validation: name too long |
| 2311 | /// |
| 2312 | /// In en, this message translates to: |
| 2313 | /// **'Name must be 50 characters or less'** |
| 2314 | String get name_length_validation; |
| 2315 | |
| 2316 | /// Validation: invalid host |
| 2317 | /// |
| 2318 | /// In en, this message translates to: |
| 2319 | /// **'Enter a valid hostname or IP address'** |
| 2320 | String get host_valid; |
| 2321 | |
| 2322 | /// OpenRouter API key hint |
| 2323 | /// |
| 2324 | /// In en, this message translates to: |
| 2325 | /// **'sk-...'** |
| 2326 | String get api_key_hint_openrouter; |
| 2327 | |
| 2328 | /// Requesty API key hint |
| 2329 | /// |
| 2330 | /// In en, this message translates to: |
| 2331 | /// **'rqsty-...'** |
| 2332 | String get api_key_hint_requesty; |
| 2333 | |
| 2334 | /// Generic API key hint |
| 2335 | /// |
| 2336 | /// In en, this message translates to: |
| 2337 | /// **'For authenticated servers'** |
| 2338 | String get api_key_hint_generic; |
| 2339 | |
| 2340 | /// Update server button |
| 2341 | /// |
| 2342 | /// In en, this message translates to: |
| 2343 | /// **'Update Server'** |
| 2344 | String get update_server; |
| 2345 | |
| 2346 | /// Save server button |
| 2347 | /// |
| 2348 | /// In en, this message translates to: |
| 2349 | /// **'Save Server'** |
| 2350 | String get save_server; |
| 2351 | |
| 2352 | /// Server update snackbar |
| 2353 | /// |
| 2354 | /// In en, this message translates to: |
| 2355 | /// **'Server updated'** |
| 2356 | String get server_updated; |
| 2357 | |
| 2358 | /// Server added snackbar |
| 2359 | /// |
| 2360 | /// In en, this message translates to: |
| 2361 | /// **'Server added'** |
| 2362 | String get server_added; |
| 2363 | |
| 2364 | /// Onboarding download model screen title |
| 2365 | /// |
| 2366 | /// In en, this message translates to: |
| 2367 | /// **'Download a Model'** |
| 2368 | String get download_model_title; |
| 2369 | |
| 2370 | /// Onboarding download model description |
| 2371 | /// |
| 2372 | /// In en, this message translates to: |
| 2373 | /// **'Choose a model to download.\nIt will run locally on your device.'** |
| 2374 | String get download_model_desc; |
| 2375 | |
| 2376 | /// Platform limitation notice |
| 2377 | /// |
| 2378 | /// In en, this message translates to: |
| 2379 | /// **'On-device inference is currently available on Android only.'** |
| 2380 | String get on_device_android_only; |
| 2381 | |
| 2382 | /// Total RAM label |
| 2383 | /// |
| 2384 | /// In en, this message translates to: |
| 2385 | /// **'Total RAM'** |
| 2386 | String get total_ram; |
| 2387 | |
| 2388 | /// Available label |
| 2389 | /// |
| 2390 | /// In en, this message translates to: |
| 2391 | /// **'Available'** |
| 2392 | String get available; |
| 2393 | |
| 2394 | /// Minimum RAM requirement label |
| 2395 | /// |
| 2396 | /// In en, this message translates to: |
| 2397 | /// **'{fileSize} GB RAM min'** |
| 2398 | String ram_min_required(String fileSize); |
| 2399 | |
| 2400 | /// Download progress display |
| 2401 | /// |
| 2402 | /// In en, this message translates to: |
| 2403 | /// **'{percent}% • {speed}'** |
| 2404 | String download_progress(String percent, String speed); |
| 2405 | |
| 2406 | /// Estimated time remaining label |
| 2407 | /// |
| 2408 | /// In en, this message translates to: |
| 2409 | /// **'ETA: {eta}'** |
| 2410 | String eta_label(String eta); |
| 2411 | |
| 2412 | /// Paused download status with progress |
| 2413 | /// |
| 2414 | /// In en, this message translates to: |
| 2415 | /// **'Paused - {percent}%'** |
| 2416 | String paused_progress(String percent); |
| 2417 | |
| 2418 | /// RAM warning during download |
| 2419 | /// |
| 2420 | /// In en, this message translates to: |
| 2421 | /// **'This model requires at least {ram} GB RAM, but your device has {totalMemory}. It may not run correctly or could cause the app to crash.'** |
| 2422 | String ram_warning_body_download(String ram, String totalMemory); |
| 2423 | |
| 2424 | /// RAM warning during model load |
| 2425 | /// |
| 2426 | /// In en, this message translates to: |
| 2427 | /// **'Your device has {availableRAM} available RAM, but this model recommends at least {ram} GB. Loading it might fail or cause instability.'** |
| 2428 | String ram_warning_body_load(String availableRAM, String ram); |
| 2429 | |
| 2430 | /// Onboarding theme selection title |
| 2431 | /// |
| 2432 | /// In en, this message translates to: |
| 2433 | /// **'Choose Theme'** |
| 2434 | String get choose_theme; |
| 2435 | |
| 2436 | /// Onboarding theme selection description |
| 2437 | /// |
| 2438 | /// In en, this message translates to: |
| 2439 | /// **'Personalize the app appearance. You can always change this later in settings.'** |
| 2440 | String get choose_theme_desc; |
| 2441 | |
| 2442 | /// System theme card title |
| 2443 | /// |
| 2444 | /// In en, this message translates to: |
| 2445 | /// **'System'** |
| 2446 | String get theme_card_system; |
| 2447 | |
| 2448 | /// System theme card subtitle |
| 2449 | /// |
| 2450 | /// In en, this message translates to: |
| 2451 | /// **'Matches your device settings'** |
| 2452 | String get theme_card_system_sub; |
| 2453 | |
| 2454 | /// Light theme card title |
| 2455 | /// |
| 2456 | /// In en, this message translates to: |
| 2457 | /// **'Light'** |
| 2458 | String get theme_card_light; |
| 2459 | |
| 2460 | /// Light theme card subtitle |
| 2461 | /// |
| 2462 | /// In en, this message translates to: |
| 2463 | /// **'Clean and bright'** |
| 2464 | String get theme_card_light_sub; |
| 2465 | |
| 2466 | /// Dark theme card title |
| 2467 | /// |
| 2468 | /// In en, this message translates to: |
| 2469 | /// **'Dark'** |
| 2470 | String get theme_card_dark; |
| 2471 | |
| 2472 | /// Dark theme card subtitle |
| 2473 | /// |
| 2474 | /// In en, this message translates to: |
| 2475 | /// **'Easy on the eyes'** |
| 2476 | String get theme_card_dark_sub; |
| 2477 | |
| 2478 | /// Claude theme card title |
| 2479 | /// |
| 2480 | /// In en, this message translates to: |
| 2481 | /// **'Claude'** |
| 2482 | String get theme_card_claude; |
| 2483 | |
| 2484 | /// Claude theme card subtitle |
| 2485 | /// |
| 2486 | /// In en, this message translates to: |
| 2487 | /// **'A warm, peach-tinted theme'** |
| 2488 | String get theme_card_claude_sub; |
| 2489 | |
| 2490 | /// Onboarding notification screen heading |
| 2491 | /// |
| 2492 | /// In en, this message translates to: |
| 2493 | /// **'Stay Updated'** |
| 2494 | String get stay_updated; |
| 2495 | |
| 2496 | /// Onboarding notification screen description |
| 2497 | /// |
| 2498 | /// In en, this message translates to: |
| 2499 | /// **'Get notified when your AI models finish downloading or when long-running tasks complete.'** |
| 2500 | String get stay_updated_desc; |
| 2501 | |
| 2502 | /// Notification benefit list item |
| 2503 | /// |
| 2504 | /// In en, this message translates to: |
| 2505 | /// **'Model download progress'** |
| 2506 | String get notification_benefit_downloads; |
| 2507 | |
| 2508 | /// Notification benefit list item |
| 2509 | /// |
| 2510 | /// In en, this message translates to: |
| 2511 | /// **'Generation completions'** |
| 2512 | String get notification_benefit_completions; |
| 2513 | |
| 2514 | /// Notification benefit list item |
| 2515 | /// |
| 2516 | /// In en, this message translates to: |
| 2517 | /// **'Background tasks status'** |
| 2518 | String get notification_benefit_background; |
| 2519 | |
| 2520 | /// Allow notifications button |
| 2521 | /// |
| 2522 | /// In en, this message translates to: |
| 2523 | /// **'Allow Notifications'** |
| 2524 | String get allow_notifications; |
| 2525 | |
| 2526 | /// Server list screen title |
| 2527 | /// |
| 2528 | /// In en, this message translates to: |
| 2529 | /// **'Servers'** |
| 2530 | String get servers_title; |
| 2531 | |
| 2532 | /// Empty server list title |
| 2533 | /// |
| 2534 | /// In en, this message translates to: |
| 2535 | /// **'No Servers Yet'** |
| 2536 | String get no_servers_yet; |
| 2537 | |
| 2538 | /// Empty server list description |
| 2539 | /// |
| 2540 | /// In en, this message translates to: |
| 2541 | /// **'Add your first server to start chatting with AI models.'** |
| 2542 | String get no_servers_desc; |
| 2543 | |
| 2544 | /// Add server button |
| 2545 | /// |
| 2546 | /// In en, this message translates to: |
| 2547 | /// **'Add Server'** |
| 2548 | String get add_server; |
| 2549 | |
| 2550 | /// Server switch snackbar |
| 2551 | /// |
| 2552 | /// In en, this message translates to: |
| 2553 | /// **'Switched to {name}'** |
| 2554 | String switched_to_server(String name); |
| 2555 | |
| 2556 | /// Edit server screen title |
| 2557 | /// |
| 2558 | /// In en, this message translates to: |
| 2559 | /// **'Edit Server'** |
| 2560 | String get edit_server; |
| 2561 | |
| 2562 | /// Add server screen title |
| 2563 | /// |
| 2564 | /// In en, this message translates to: |
| 2565 | /// **'Add Server'** |
| 2566 | String get add_server_title; |
| 2567 | |
| 2568 | /// Server type section label |
| 2569 | /// |
| 2570 | /// In en, this message translates to: |
| 2571 | /// **'Server Type'** |
| 2572 | String get server_type_label; |
| 2573 | |
| 2574 | /// Server icon section label |
| 2575 | /// |
| 2576 | /// In en, this message translates to: |
| 2577 | /// **'Server Icon'** |
| 2578 | String get server_icon_label; |
| 2579 | |
| 2580 | /// Default icon fallback text |
| 2581 | /// |
| 2582 | /// In en, this message translates to: |
| 2583 | /// **'Default icon'** |
| 2584 | String get default_icon; |
| 2585 | |
| 2586 | /// LM Studio server type display |
| 2587 | /// |
| 2588 | /// In en, this message translates to: |
| 2589 | /// **'LM Studio'** |
| 2590 | String get server_type_lm_studio_display; |
| 2591 | |
| 2592 | /// OpenAI compatible server type display |
| 2593 | /// |
| 2594 | /// In en, this message translates to: |
| 2595 | /// **'OpenAI Compatible'** |
| 2596 | String get server_type_openai_display; |
| 2597 | |
| 2598 | /// Ollama server type display |
| 2599 | /// |
| 2600 | /// In en, this message translates to: |
| 2601 | /// **'Ollama'** |
| 2602 | String get server_type_ollama_display; |
| 2603 | |
| 2604 | /// OpenRouter server type display |
| 2605 | /// |
| 2606 | /// In en, this message translates to: |
| 2607 | /// **'OpenRouter'** |
| 2608 | String get server_type_openrouter_display; |
| 2609 | |
| 2610 | /// Requesty server type display |
| 2611 | /// |
| 2612 | /// In en, this message translates to: |
| 2613 | /// **'Requesty'** |
| 2614 | String get server_type_requesty_display; |
| 2615 | |
| 2616 | /// On-device server type display |
| 2617 | /// |
| 2618 | /// In en, this message translates to: |
| 2619 | /// **'On-Device'** |
| 2620 | String get server_type_on_device_display; |
| 2621 | |
| 2622 | /// OpenRouter default address |
| 2623 | /// |
| 2624 | /// In en, this message translates to: |
| 2625 | /// **'openrouter.ai'** |
| 2626 | String get server_address_openrouter; |
| 2627 | |
| 2628 | /// Requesty default address |
| 2629 | /// |
| 2630 | /// In en, this message translates to: |
| 2631 | /// **'router.requesty.ai'** |
| 2632 | String get server_address_requesty; |
| 2633 | |
| 2634 | /// On-device server address |
| 2635 | /// |
| 2636 | /// In en, this message translates to: |
| 2637 | /// **'Local inference'** |
| 2638 | String get server_address_on_device; |
| 2639 | |
| 2640 | /// Server address display format |
| 2641 | /// |
| 2642 | /// In en, this message translates to: |
| 2643 | /// **'{host}:{port}'** |
| 2644 | String server_address_format(String host, String port); |
| 2645 | |
| 2646 | /// Default server badge |
| 2647 | /// |
| 2648 | /// In en, this message translates to: |
| 2649 | /// **'Default'** |
| 2650 | String get default_badge; |
| 2651 | |
| 2652 | /// Set as default menu item |
| 2653 | /// |
| 2654 | /// In en, this message translates to: |
| 2655 | /// **'Set as Default'** |
| 2656 | String get set_as_default; |
| 2657 | |
| 2658 | /// Icon picker sheet title |
| 2659 | /// |
| 2660 | /// In en, this message translates to: |
| 2661 | /// **'Select Icon'** |
| 2662 | String get select_icon; |
| 2663 | |
| 2664 | /// Icon picker sheet description |
| 2665 | /// |
| 2666 | /// In en, this message translates to: |
| 2667 | /// **'Choose an icon for your server'** |
| 2668 | String get select_icon_desc; |
| 2669 | |
| 2670 | /// Icon search field placeholder |
| 2671 | /// |
| 2672 | /// In en, this message translates to: |
| 2673 | /// **'Search icons...'** |
| 2674 | String get search_icons_hint; |
| 2675 | |
| 2676 | /// Server icon name |
| 2677 | /// |
| 2678 | /// In en, this message translates to: |
| 2679 | /// **'Server Stack'** |
| 2680 | String get server_icon_stack; |
| 2681 | |
| 2682 | /// Server icon name |
| 2683 | /// |
| 2684 | /// In en, this message translates to: |
| 2685 | /// **'Server Stack 02'** |
| 2686 | String get server_icon_stack2; |
| 2687 | |
| 2688 | /// Server icon name |
| 2689 | /// |
| 2690 | /// In en, this message translates to: |
| 2691 | /// **'Server Stack 03'** |
| 2692 | String get server_icon_stack3; |
| 2693 | |
| 2694 | /// Server icon name |
| 2695 | /// |
| 2696 | /// In en, this message translates to: |
| 2697 | /// **'Cloud'** |
| 2698 | String get server_icon_cloud; |
| 2699 | |
| 2700 | /// Server icon name |
| 2701 | /// |
| 2702 | /// In en, this message translates to: |
| 2703 | /// **'Cloud Server'** |
| 2704 | String get server_icon_cloud_server; |
| 2705 | |
| 2706 | /// Server icon name |
| 2707 | /// |
| 2708 | /// In en, this message translates to: |
| 2709 | /// **'MCP Server'** |
| 2710 | String get server_icon_mcp; |
| 2711 | |
| 2712 | /// Server icon name |
| 2713 | /// |
| 2714 | /// In en, this message translates to: |
| 2715 | /// **'Database'** |
| 2716 | String get server_icon_database; |
| 2717 | |
| 2718 | /// Server icon name |
| 2719 | /// |
| 2720 | /// In en, this message translates to: |
| 2721 | /// **'Database 01'** |
| 2722 | String get server_icon_database1; |
| 2723 | |
| 2724 | /// Server icon name |
| 2725 | /// |
| 2726 | /// In en, this message translates to: |
| 2727 | /// **'Database 02'** |
| 2728 | String get server_icon_database2; |
| 2729 | |
| 2730 | /// Server icon name |
| 2731 | /// |
| 2732 | /// In en, this message translates to: |
| 2733 | /// **'CPU'** |
| 2734 | String get server_icon_cpu; |
| 2735 | |
| 2736 | /// Server icon name |
| 2737 | /// |
| 2738 | /// In en, this message translates to: |
| 2739 | /// **'Chip'** |
| 2740 | String get server_icon_chip; |
| 2741 | |
| 2742 | /// Server icon name |
| 2743 | /// |
| 2744 | /// In en, this message translates to: |
| 2745 | /// **'Chip 02'** |
| 2746 | String get server_icon_chip2; |
| 2747 | |
| 2748 | /// Server icon name |
| 2749 | /// |
| 2750 | /// In en, this message translates to: |
| 2751 | /// **'Computer'** |
| 2752 | String get server_icon_computer; |
| 2753 | |
| 2754 | /// Server icon name |
| 2755 | /// |
| 2756 | /// In en, this message translates to: |
| 2757 | /// **'Laptop'** |
| 2758 | String get server_icon_laptop; |
| 2759 | |
| 2760 | /// Server icon name |
| 2761 | /// |
| 2762 | /// In en, this message translates to: |
| 2763 | /// **'Computer Terminal'** |
| 2764 | String get server_icon_terminal; |
| 2765 | |
| 2766 | /// Server icon name |
| 2767 | /// |
| 2768 | /// In en, this message translates to: |
| 2769 | /// **'Code'** |
| 2770 | String get server_icon_code; |
| 2771 | |
| 2772 | /// Server icon name |
| 2773 | /// |
| 2774 | /// In en, this message translates to: |
| 2775 | /// **'AI Brain'** |
| 2776 | String get server_icon_ai_brain; |
| 2777 | |
| 2778 | /// Server icon name |
| 2779 | /// |
| 2780 | /// In en, this message translates to: |
| 2781 | /// **'AI Brain 02'** |
| 2782 | String get server_icon_ai_brain2; |
| 2783 | |
| 2784 | /// Server icon name |
| 2785 | /// |
| 2786 | /// In en, this message translates to: |
| 2787 | /// **'AI Cloud'** |
| 2788 | String get server_icon_ai_cloud; |
| 2789 | |
| 2790 | /// Server icon name |
| 2791 | /// |
| 2792 | /// In en, this message translates to: |
| 2793 | /// **'AI Network'** |
| 2794 | String get server_icon_ai_network; |
| 2795 | |
| 2796 | /// Server icon name |
| 2797 | /// |
| 2798 | /// In en, this message translates to: |
| 2799 | /// **'AI Chat'** |
| 2800 | String get server_icon_ai_chat; |
| 2801 | |
| 2802 | /// Server icon name |
| 2803 | /// |
| 2804 | /// In en, this message translates to: |
| 2805 | /// **'Cellular Network'** |
| 2806 | String get server_icon_cellular; |
| 2807 | |
| 2808 | /// Server icon name |
| 2809 | /// |
| 2810 | /// In en, this message translates to: |
| 2811 | /// **'Plug 01'** |
| 2812 | String get server_icon_plug1; |
| 2813 | |
| 2814 | /// Server icon name |
| 2815 | /// |
| 2816 | /// In en, this message translates to: |
| 2817 | /// **'Plug 02'** |
| 2818 | String get server_icon_plug2; |
| 2819 | |
| 2820 | /// Server icon name |
| 2821 | /// |
| 2822 | /// In en, this message translates to: |
| 2823 | /// **'Bot'** |
| 2824 | String get server_icon_bot; |
| 2825 | |
| 2826 | /// Server icon name |
| 2827 | /// |
| 2828 | /// In en, this message translates to: |
| 2829 | /// **'Bot 02'** |
| 2830 | String get server_icon_bot2; |
| 2831 | |
| 2832 | /// Server icon name |
| 2833 | /// |
| 2834 | /// In en, this message translates to: |
| 2835 | /// **'Robotic'** |
| 2836 | String get server_icon_robotic; |
| 2837 | |
| 2838 | /// Server icon name |
| 2839 | /// |
| 2840 | /// In en, this message translates to: |
| 2841 | /// **'Rocket'** |
| 2842 | String get server_icon_rocket; |
| 2843 | |
| 2844 | /// Server icon name |
| 2845 | /// |
| 2846 | /// In en, this message translates to: |
| 2847 | /// **'Star'** |
| 2848 | String get server_icon_star; |
| 2849 | |
| 2850 | /// Server icon name |
| 2851 | /// |
| 2852 | /// In en, this message translates to: |
| 2853 | /// **'Settings 01'** |
| 2854 | String get server_icon_settings1; |
| 2855 | |
| 2856 | /// Server icon name |
| 2857 | /// |
| 2858 | /// In en, this message translates to: |
| 2859 | /// **'Settings 02'** |
| 2860 | String get server_icon_settings2; |
| 2861 | |
| 2862 | /// Server icon name |
| 2863 | /// |
| 2864 | /// In en, this message translates to: |
| 2865 | /// **'Home 01'** |
| 2866 | String get server_icon_home1; |
| 2867 | |
| 2868 | /// Server icon name |
| 2869 | /// |
| 2870 | /// In en, this message translates to: |
| 2871 | /// **'Home 02'** |
| 2872 | String get server_icon_home2; |
| 2873 | |
| 2874 | /// Server icon name |
| 2875 | /// |
| 2876 | /// In en, this message translates to: |
| 2877 | /// **'Folder 01'** |
| 2878 | String get server_icon_folder1; |
| 2879 | |
| 2880 | /// Server icon name |
| 2881 | /// |
| 2882 | /// In en, this message translates to: |
| 2883 | /// **'Folder 02'** |
| 2884 | String get server_icon_folder2; |
| 2885 | |
| 2886 | /// Server icon name |
| 2887 | /// |
| 2888 | /// In en, this message translates to: |
| 2889 | /// **'File 01'** |
| 2890 | String get server_icon_file1; |
| 2891 | |
| 2892 | /// Server icon name |
| 2893 | /// |
| 2894 | /// In en, this message translates to: |
| 2895 | /// **'Lock'** |
| 2896 | String get server_icon_lock; |
| 2897 | |
| 2898 | /// Server icon name |
| 2899 | /// |
| 2900 | /// In en, this message translates to: |
| 2901 | /// **'Key 01'** |
| 2902 | String get server_icon_key; |
| 2903 | |
| 2904 | /// Server icon name |
| 2905 | /// |
| 2906 | /// In en, this message translates to: |
| 2907 | /// **'Link 01'** |
| 2908 | String get server_icon_link; |
| 2909 | |
| 2910 | /// Server icon name |
| 2911 | /// |
| 2912 | /// In en, this message translates to: |
| 2913 | /// **'Globe'** |
| 2914 | String get server_icon_globe; |
| 2915 | |
| 2916 | /// Server icon name |
| 2917 | /// |
| 2918 | /// In en, this message translates to: |
| 2919 | /// **'API'** |
| 2920 | String get server_icon_api; |
| 2921 | |
| 2922 | /// Server icon name |
| 2923 | /// |
| 2924 | /// In en, this message translates to: |
| 2925 | /// **'Arrow Right 01'** |
| 2926 | String get server_icon_arrow_right; |
| 2927 | |
| 2928 | /// Server icon name |
| 2929 | /// |
| 2930 | /// In en, this message translates to: |
| 2931 | /// **'Check Circle'** |
| 2932 | String get server_icon_check; |
| 2933 | |
| 2934 | /// Server icon name |
| 2935 | /// |
| 2936 | /// In en, this message translates to: |
| 2937 | /// **'Alert Circle'** |
| 2938 | String get server_icon_alert; |
| 2939 | |
| 2940 | /// Server icon name |
| 2941 | /// |
| 2942 | /// In en, this message translates to: |
| 2943 | /// **'Info Circle'** |
| 2944 | String get server_icon_info; |
| 2945 | |
| 2946 | /// Server icon name |
| 2947 | /// |
| 2948 | /// In en, this message translates to: |
| 2949 | /// **'Zap'** |
| 2950 | String get server_icon_zap; |
| 2951 | |
| 2952 | /// Server icon name |
| 2953 | /// |
| 2954 | /// In en, this message translates to: |
| 2955 | /// **'Cloud Upload'** |
| 2956 | String get server_icon_cloud_upload; |
| 2957 | |
| 2958 | /// Server icon name |
| 2959 | /// |
| 2960 | /// In en, this message translates to: |
| 2961 | /// **'Cloud Download'** |
| 2962 | String get server_icon_cloud_download; |
| 2963 | |
| 2964 | /// Server icon name |
| 2965 | /// |
| 2966 | /// In en, this message translates to: |
| 2967 | /// **'Refresh'** |
| 2968 | String get server_icon_refresh; |
| 2969 | |
| 2970 | /// Server icon name |
| 2971 | /// |
| 2972 | /// In en, this message translates to: |
| 2973 | /// **'Hard Drive'** |
| 2974 | String get server_icon_hard_drive; |
| 2975 | |
| 2976 | /// Server icon name |
| 2977 | /// |
| 2978 | /// In en, this message translates to: |
| 2979 | /// **'Drive'** |
| 2980 | String get server_icon_drive; |
| 2981 | |
| 2982 | /// Persona list screen title |
| 2983 | /// |
| 2984 | /// In en, this message translates to: |
| 2985 | /// **'Personas'** |
| 2986 | String get personas_title; |
| 2987 | |
| 2988 | /// General persona category |
| 2989 | /// |
| 2990 | /// In en, this message translates to: |
| 2991 | /// **'General'** |
| 2992 | String get persona_category_general; |
| 2993 | |
| 2994 | /// Coding persona category |
| 2995 | /// |
| 2996 | /// In en, this message translates to: |
| 2997 | /// **'Coding'** |
| 2998 | String get persona_category_coding; |
| 2999 | |
| 3000 | /// Education persona category |
| 3001 | /// |
| 3002 | /// In en, this message translates to: |
| 3003 | /// **'Education'** |
| 3004 | String get persona_category_education; |
| 3005 | |
| 3006 | /// Creative persona category |
| 3007 | /// |
| 3008 | /// In en, this message translates to: |
| 3009 | /// **'Creative'** |
| 3010 | String get persona_category_creative; |
| 3011 | |
| 3012 | /// Built-in personas section label |
| 3013 | /// |
| 3014 | /// In en, this message translates to: |
| 3015 | /// **'BUILT-IN'** |
| 3016 | String get persona_builtin_section; |
| 3017 | |
| 3018 | /// My personas section label |
| 3019 | /// |
| 3020 | /// In en, this message translates to: |
| 3021 | /// **'MY PERSONAS'** |
| 3022 | String get persona_my_section; |
| 3023 | |
| 3024 | /// Clone and edit persona action |
| 3025 | /// |
| 3026 | /// In en, this message translates to: |
| 3027 | /// **'Clone & Edit'** |
| 3028 | String get clone_edit; |
| 3029 | |
| 3030 | /// Built-in persona badge |
| 3031 | /// |
| 3032 | /// In en, this message translates to: |
| 3033 | /// **'Built-in'** |
| 3034 | String get builtin_badge; |
| 3035 | |
| 3036 | /// Empty persona list title |
| 3037 | /// |
| 3038 | /// In en, this message translates to: |
| 3039 | /// **'No personas found'** |
| 3040 | String get no_personas_found; |
| 3041 | |
| 3042 | /// Empty persona list subtitle |
| 3043 | /// |
| 3044 | /// In en, this message translates to: |
| 3045 | /// **'Create your first persona to customize AI behavior.'** |
| 3046 | String get no_personas_desc; |
| 3047 | |
| 3048 | /// Edit persona screen title |
| 3049 | /// |
| 3050 | /// In en, this message translates to: |
| 3051 | /// **'Edit Persona'** |
| 3052 | String get edit_persona; |
| 3053 | |
| 3054 | /// Create persona screen title |
| 3055 | /// |
| 3056 | /// In en, this message translates to: |
| 3057 | /// **'Create Persona'** |
| 3058 | String get create_persona; |
| 3059 | |
| 3060 | /// Create persona action button |
| 3061 | /// |
| 3062 | /// In en, this message translates to: |
| 3063 | /// **'Create'** |
| 3064 | String get create_persona_button; |
| 3065 | |
| 3066 | /// Emoji selection label |
| 3067 | /// |
| 3068 | /// In en, this message translates to: |
| 3069 | /// **'Emoji'** |
| 3070 | String get emoji_label; |
| 3071 | |
| 3072 | /// Name field label |
| 3073 | /// |
| 3074 | /// In en, this message translates to: |
| 3075 | /// **'Name'** |
| 3076 | String get name_label; |
| 3077 | |
| 3078 | /// Persona name hint |
| 3079 | /// |
| 3080 | /// In en, this message translates to: |
| 3081 | /// **'My Persona'** |
| 3082 | String get my_persona_hint; |
| 3083 | |
| 3084 | /// Category field label |
| 3085 | /// |
| 3086 | /// In en, this message translates to: |
| 3087 | /// **'Category'** |
| 3088 | String get category_label; |
| 3089 | |
| 3090 | /// Optional description label |
| 3091 | /// |
| 3092 | /// In en, this message translates to: |
| 3093 | /// **'Description (optional)'** |
| 3094 | String get description_optional; |
| 3095 | |
| 3096 | /// Description field hint |
| 3097 | /// |
| 3098 | /// In en, this message translates to: |
| 3099 | /// **'What this persona does...'** |
| 3100 | String get description_hint; |
| 3101 | |
| 3102 | /// System prompt section label |
| 3103 | /// |
| 3104 | /// In en, this message translates to: |
| 3105 | /// **'System Prompt'** |
| 3106 | String get system_prompt; |
| 3107 | |
| 3108 | /// Character counter for system prompt |
| 3109 | /// |
| 3110 | /// In en, this message translates to: |
| 3111 | /// **'{currentLen}/4000'** |
| 3112 | String character_count_max(int currentLen); |
| 3113 | |
| 3114 | /// Preview placeholder when no prompt |
| 3115 | /// |
| 3116 | /// In en, this message translates to: |
| 3117 | /// **'No prompt yet...'** |
| 3118 | String get no_prompt_placeholder; |
| 3119 | |
| 3120 | /// System prompt text field hint |
| 3121 | /// |
| 3122 | /// In en, this message translates to: |
| 3123 | /// **'You are a helpful assistant...'** |
| 3124 | String get prompt_hint; |
| 3125 | |
| 3126 | /// Validation: prompt required |
| 3127 | /// |
| 3128 | /// In en, this message translates to: |
| 3129 | /// **'System prompt is required'** |
| 3130 | String get prompt_required; |
| 3131 | |
| 3132 | /// Validation: prompt max chars |
| 3133 | /// |
| 3134 | /// In en, this message translates to: |
| 3135 | /// **'Max 4000 characters'** |
| 3136 | String get prompt_max_chars; |
| 3137 | |
| 3138 | /// Expandable advanced settings section |
| 3139 | /// |
| 3140 | /// In en, this message translates to: |
| 3141 | /// **'Advanced Settings'** |
| 3142 | String get advanced_settings; |
| 3143 | |
| 3144 | /// Temperature field label in personas |
| 3145 | /// |
| 3146 | /// In en, this message translates to: |
| 3147 | /// **'Temperature (0.0-2.0)'** |
| 3148 | String get temperature_label; |
| 3149 | |
| 3150 | /// Top P field label in personas |
| 3151 | /// |
| 3152 | /// In en, this message translates to: |
| 3153 | /// **'Top P (0.0-1.0)'** |
| 3154 | String get top_p_label; |
| 3155 | |
| 3156 | /// Temperature field hint |
| 3157 | /// |
| 3158 | /// In en, this message translates to: |
| 3159 | /// **'0.7'** |
| 3160 | String get temp_hint; |
| 3161 | |
| 3162 | /// Top P field hint |
| 3163 | /// |
| 3164 | /// In en, this message translates to: |
| 3165 | /// **'0.9'** |
| 3166 | String get top_p_hint; |
| 3167 | |
| 3168 | /// Range validation error (temperature) |
| 3169 | /// |
| 3170 | /// In en, this message translates to: |
| 3171 | /// **'0.0-2.0'** |
| 3172 | String get range_0_2; |
| 3173 | |
| 3174 | /// Range validation error (top P) |
| 3175 | /// |
| 3176 | /// In en, this message translates to: |
| 3177 | /// **'0.0-1.0'** |
| 3178 | String get range_0_1; |
| 3179 | |
| 3180 | /// Persona update snackbar |
| 3181 | /// |
| 3182 | /// In en, this message translates to: |
| 3183 | /// **'Persona updated'** |
| 3184 | String get persona_updated; |
| 3185 | |
| 3186 | /// Persona creation snackbar |
| 3187 | /// |
| 3188 | /// In en, this message translates to: |
| 3189 | /// **'Persona created'** |
| 3190 | String get persona_created; |
| 3191 | |
| 3192 | /// TTS model manager screen title |
| 3193 | /// |
| 3194 | /// In en, this message translates to: |
| 3195 | /// **'Text To Speech Models'** |
| 3196 | String get tts_models_title; |
| 3197 | |
| 3198 | /// Always available status |
| 3199 | /// |
| 3200 | /// In en, this message translates to: |
| 3201 | /// **'Always available'** |
| 3202 | String get always_available; |
| 3203 | |
| 3204 | /// System TTS engine description |
| 3205 | /// |
| 3206 | /// In en, this message translates to: |
| 3207 | /// **'Uses your device\'s built-in text-to-speech engine.\nNo downloads required. Voice selection uses your device\'s system settings.'** |
| 3208 | String get tts_system_desc; |
| 3209 | |
| 3210 | /// Downloading status text |
| 3211 | /// |
| 3212 | /// In en, this message translates to: |
| 3213 | /// **'Downloading...'** |
| 3214 | String get downloading_status; |
| 3215 | |
| 3216 | /// Kitten TTS engine description |
| 3217 | /// |
| 3218 | /// In en, this message translates to: |
| 3219 | /// **'Lightning-fast neural TTS with 8 expressive voices.\nRequires {size} download.'** |
| 3220 | String tts_kitten_desc(String size); |
| 3221 | |
| 3222 | /// Piper TTS engine description |
| 3223 | /// |
| 3224 | /// In en, this message translates to: |
| 3225 | /// **'Fast offline Piper voices with 2 expressive voices.\nRequires {size} download per voice.'** |
| 3226 | String tts_piper_desc(String size); |
| 3227 | |
| 3228 | /// Engine specification display |
| 3229 | /// |
| 3230 | /// In en, this message translates to: |
| 3231 | /// **'{sizeMb} MB · {ramMb} MB RAM · {voiceCount} voices'** |
| 3232 | String engine_spec(String sizeMb, String ramMb, int voiceCount); |
| 3233 | |
| 3234 | /// On-device model manager screen title |
| 3235 | /// |
| 3236 | /// In en, this message translates to: |
| 3237 | /// **'On-Device Models'** |
| 3238 | String get on_device_models_title; |
| 3239 | |
| 3240 | /// Settings field label for an optional Hugging Face access token |
| 3241 | /// |
| 3242 | /// In en, this message translates to: |
| 3243 | /// **'Hugging Face Token (Optional)'** |
| 3244 | String get settings_huggingface_token; |
| 3245 | |
| 3246 | /// Description for the Hugging Face token setting |
| 3247 | /// |
| 3248 | /// In en, this message translates to: |
| 3249 | /// **'Required only for gated models (e.g. Gemma). Get a token at huggingface.co/settings/tokens.'** |
| 3250 | String get settings_huggingface_token_desc; |
| 3251 | |
| 3252 | /// Toast text after a Hugging Face token is saved |
| 3253 | /// |
| 3254 | /// In en, this message translates to: |
| 3255 | /// **'Token saved'** |
| 3256 | String get settings_huggingface_token_set; |
| 3257 | |
| 3258 | /// Toast text after a Hugging Face token is cleared |
| 3259 | /// |
| 3260 | /// In en, this message translates to: |
| 3261 | /// **'Token cleared'** |
| 3262 | String get settings_huggingface_token_cleared; |
| 3263 | |
| 3264 | /// Badge on a model that is gated on Hugging Face |
| 3265 | /// |
| 3266 | /// In en, this message translates to: |
| 3267 | /// **'Requires a Hugging Face token'** |
| 3268 | String get model_requires_huggingface_token; |
| 3269 | |
| 3270 | /// Inline warning shown when a gated model download is attempted without a token |
| 3271 | /// |
| 3272 | /// In en, this message translates to: |
| 3273 | /// **'This model is gated on Hugging Face. Add a token in Settings → On-Device Inference to download it.'** |
| 3274 | String get model_missing_huggingface_token; |
| 3275 | |
| 3276 | /// Button label to set/edit a Hugging Face token |
| 3277 | /// |
| 3278 | /// In en, this message translates to: |
| 3279 | /// **'Set token'** |
| 3280 | String get set_huggingface_token; |
| 3281 | |
| 3282 | /// Button label to clear a saved Hugging Face token |
| 3283 | /// |
| 3284 | /// In en, this message translates to: |
| 3285 | /// **'Clear'** |
| 3286 | String get clear_huggingface_token; |
| 3287 | |
| 3288 | /// Title of the dialog for entering a Hugging Face token |
| 3289 | /// |
| 3290 | /// In en, this message translates to: |
| 3291 | /// **'Hugging Face Access Token'** |
| 3292 | String get edit_huggingface_token_dialog_title; |
| 3293 | |
| 3294 | /// Placeholder for the Hugging Face token input field |
| 3295 | /// |
| 3296 | /// In en, this message translates to: |
| 3297 | /// **'hf_…'** |
| 3298 | String get huggingface_token_dialog_hint; |
| 3299 | |
| 3300 | /// Short description for the Ollama server type |
| 3301 | /// |
| 3302 | /// In en, this message translates to: |
| 3303 | /// **'Local AI engine. No API key required.'** |
| 3304 | String get server_type_ollama_desc; |
| 3305 | |
| 3306 | /// Short description for the On-Device server type |
| 3307 | /// |
| 3308 | /// In en, this message translates to: |
| 3309 | /// **'Runs on your phone. Some models need a Hugging Face token.'** |
| 3310 | String get server_type_on_device_desc; |
| 3311 | |
| 3312 | /// Short description for the LM Studio server type |
| 3313 | /// |
| 3314 | /// In en, this message translates to: |
| 3315 | /// **'Local API server. No API key required.'** |
| 3316 | String get server_type_lm_studio_desc; |
| 3317 | |
| 3318 | /// Available models section title |
| 3319 | /// |
| 3320 | /// In en, this message translates to: |
| 3321 | /// **'Available Models'** |
| 3322 | String get available_models; |
| 3323 | |
| 3324 | /// Device memory card title |
| 3325 | /// |
| 3326 | /// In en, this message translates to: |
| 3327 | /// **'Device Memory'** |
| 3328 | String get device_memory; |
| 3329 | |
| 3330 | /// RAM usage label |
| 3331 | /// |
| 3332 | /// In en, this message translates to: |
| 3333 | /// **'RAM Usage'** |
| 3334 | String get ram_usage; |
| 3335 | |
| 3336 | /// Memory status healthy |
| 3337 | /// |
| 3338 | /// In en, this message translates to: |
| 3339 | /// **'Healthy'** |
| 3340 | String get memory_healthy; |
| 3341 | |
| 3342 | /// Memory status critical |
| 3343 | /// |
| 3344 | /// In en, this message translates to: |
| 3345 | /// **'Critical'** |
| 3346 | String get memory_critical; |
| 3347 | |
| 3348 | /// Memory status low |
| 3349 | /// |
| 3350 | /// In en, this message translates to: |
| 3351 | /// **'Low'** |
| 3352 | String get memory_low; |
| 3353 | |
| 3354 | /// RAM usage percentage |
| 3355 | /// |
| 3356 | /// In en, this message translates to: |
| 3357 | /// **'{percent}% used'** |
| 3358 | String ram_used(String percent); |
| 3359 | |
| 3360 | /// Available RAM stat label |
| 3361 | /// |
| 3362 | /// In en, this message translates to: |
| 3363 | /// **'Available RAM'** |
| 3364 | String get available_ram; |
| 3365 | |
| 3366 | /// Total capacity stat label |
| 3367 | /// |
| 3368 | /// In en, this message translates to: |
| 3369 | /// **'Total Capacity'** |
| 3370 | String get total_capacity; |
| 3371 | |
| 3372 | /// Model loaded status |
| 3373 | /// |
| 3374 | /// In en, this message translates to: |
| 3375 | /// **'Loaded'** |
| 3376 | String get loaded_status; |
| 3377 | |
| 3378 | /// Backend selector section title |
| 3379 | /// |
| 3380 | /// In en, this message translates to: |
| 3381 | /// **'Inference Backend'** |
| 3382 | String get inference_backend; |
| 3383 | |
| 3384 | /// iOS backend limitation notice |
| 3385 | /// |
| 3386 | /// In en, this message translates to: |
| 3387 | /// **'Only CPU backend is available on iOS.'** |
| 3388 | String get backend_ios_notice; |
| 3389 | |
| 3390 | /// CPU backend description |
| 3391 | /// |
| 3392 | /// In en, this message translates to: |
| 3393 | /// **'Works on all devices. Most compatible.'** |
| 3394 | String get backend_cpu_desc; |
| 3395 | |
| 3396 | /// GPU backend description |
| 3397 | /// |
| 3398 | /// In en, this message translates to: |
| 3399 | /// **'OpenCL acceleration. Faster on supported devices.'** |
| 3400 | String get backend_gpu_desc; |
| 3401 | |
| 3402 | /// NPU backend description |
| 3403 | /// |
| 3404 | /// In en, this message translates to: |
| 3405 | /// **'Vendor NPU (Qualcomm/MediaTek). Fastest inference.'** |
| 3406 | String get backend_npu_desc; |
| 3407 | |
| 3408 | /// Model picker sheet title |
| 3409 | /// |
| 3410 | /// In en, this message translates to: |
| 3411 | /// **'Select Model'** |
| 3412 | String get select_model_title; |
| 3413 | |
| 3414 | /// Refresh models tooltip |
| 3415 | /// |
| 3416 | /// In en, this message translates to: |
| 3417 | /// **'Refresh models'** |
| 3418 | String get refresh_models; |
| 3419 | |
| 3420 | /// Model search field hint |
| 3421 | /// |
| 3422 | /// In en, this message translates to: |
| 3423 | /// **'Search models...'** |
| 3424 | String get search_models_hint; |
| 3425 | |
| 3426 | /// Model picker empty state title |
| 3427 | /// |
| 3428 | /// In en, this message translates to: |
| 3429 | /// **'No server connected'** |
| 3430 | String get no_server_connected; |
| 3431 | |
| 3432 | /// Model picker empty state subtitle |
| 3433 | /// |
| 3434 | /// In en, this message translates to: |
| 3435 | /// **'Add a server first to see available models.'** |
| 3436 | String get add_server_first; |
| 3437 | |
| 3438 | /// Model load error title |
| 3439 | /// |
| 3440 | /// In en, this message translates to: |
| 3441 | /// **'Failed to load models'** |
| 3442 | String get failed_load_models; |
| 3443 | |
| 3444 | /// Empty models state |
| 3445 | /// |
| 3446 | /// In en, this message translates to: |
| 3447 | /// **'No models available'** |
| 3448 | String get no_models_available; |
| 3449 | |
| 3450 | /// No search results for models |
| 3451 | /// |
| 3452 | /// In en, this message translates to: |
| 3453 | /// **'No models match \"{searchQuery}\"'** |
| 3454 | String no_models_match(String searchQuery); |
| 3455 | |
| 3456 | /// Model load failure snackbar |
| 3457 | /// |
| 3458 | /// In en, this message translates to: |
| 3459 | /// **'Failed to load model: {error}'** |
| 3460 | String model_load_failed(String error); |
| 3461 | |
| 3462 | /// Ollama model unloaded status |
| 3463 | /// |
| 3464 | /// In en, this message translates to: |
| 3465 | /// **'Unload requested for {name}. If Ollama is reachable, the model is released immediately.'** |
| 3466 | String model_unloaded_ollama(String name); |
| 3467 | |
| 3468 | /// Model unloaded success snackbar |
| 3469 | /// |
| 3470 | /// In en, this message translates to: |
| 3471 | /// **'{name} unloaded successfully'** |
| 3472 | String model_unloaded_success(String name); |
| 3473 | |
| 3474 | /// Model unload failure snackbar |
| 3475 | /// |
| 3476 | /// In en, this message translates to: |
| 3477 | /// **'Failed to unload model: {error}'** |
| 3478 | String model_unload_failed(String error); |
| 3479 | |
| 3480 | /// Unload model tooltip |
| 3481 | /// |
| 3482 | /// In en, this message translates to: |
| 3483 | /// **'Unload from server'** |
| 3484 | String get unload_from_server; |
| 3485 | |
| 3486 | /// Context length chip |
| 3487 | /// |
| 3488 | /// In en, this message translates to: |
| 3489 | /// **'{ctx} ctx'** |
| 3490 | String context_chip(String ctx); |
| 3491 | |
| 3492 | /// Button to unload all loaded models |
| 3493 | /// |
| 3494 | /// In en, this message translates to: |
| 3495 | /// **'Unload all'** |
| 3496 | String get unload_all_models; |
| 3497 | |
| 3498 | /// Count of currently loaded models |
| 3499 | /// |
| 3500 | /// In en, this message translates to: |
| 3501 | /// **'{count} loaded'** |
| 3502 | String loaded_models_count(int count); |
| 3503 | |
| 3504 | /// Snackbar after unloading all models |
| 3505 | /// |
| 3506 | /// In en, this message translates to: |
| 3507 | /// **'All models unloaded'** |
| 3508 | String get all_models_unloaded; |
| 3509 | |
| 3510 | /// Branch conversation from a message |
| 3511 | /// |
| 3512 | /// In en, this message translates to: |
| 3513 | /// **'Branch chat'** |
| 3514 | String get branch_chat; |
| 3515 | |
| 3516 | /// Branch chat option description |
| 3517 | /// |
| 3518 | /// In en, this message translates to: |
| 3519 | /// **'Start a new conversation from this message'** |
| 3520 | String get branch_chat_desc; |
| 3521 | |
| 3522 | /// Description shown when editing an assistant message |
| 3523 | /// |
| 3524 | /// In en, this message translates to: |
| 3525 | /// **'Edit the assistant response text.'** |
| 3526 | String get edit_assistant_message_desc; |
| 3527 | |
| 3528 | /// Tooltip for switching to the model used in a message |
| 3529 | /// |
| 3530 | /// In en, this message translates to: |
| 3531 | /// **'Switch to {modelName}'** |
| 3532 | String switch_to_model(String modelName, Object model); |
| 3533 | |
| 3534 | /// Download notification title |
| 3535 | /// |
| 3536 | /// In en, this message translates to: |
| 3537 | /// **'Downloading {modelName}...'** |
| 3538 | String download_notification_title(String modelName); |
| 3539 | |
| 3540 | /// Download complete notification title |
| 3541 | /// |
| 3542 | /// In en, this message translates to: |
| 3543 | /// **'Download complete!'** |
| 3544 | String get download_complete_notification; |
| 3545 | |
| 3546 | /// Download complete notification body |
| 3547 | /// |
| 3548 | /// In en, this message translates to: |
| 3549 | /// **'{modelName} has been downloaded successfully.'** |
| 3550 | String download_complete_body(String modelName); |
| 3551 | |
| 3552 | /// Download failed notification title |
| 3553 | /// |
| 3554 | /// In en, this message translates to: |
| 3555 | /// **'Download failed: {error}'** |
| 3556 | String download_failed_notification(String error); |
| 3557 | |
| 3558 | /// Download failed notification body |
| 3559 | /// |
| 3560 | /// In en, this message translates to: |
| 3561 | /// **'Failed to download {modelName}.'** |
| 3562 | String download_failed_body(String modelName); |
| 3563 | |
| 3564 | /// System TTS engine display name |
| 3565 | /// |
| 3566 | /// In en, this message translates to: |
| 3567 | /// **'System TTS'** |
| 3568 | String get engine_name_system; |
| 3569 | |
| 3570 | /// System TTS engine tagline |
| 3571 | /// |
| 3572 | /// In en, this message translates to: |
| 3573 | /// **'Built-in device engine'** |
| 3574 | String get engine_tagline_system; |
| 3575 | |
| 3576 | /// Kitten TTS engine display name |
| 3577 | /// |
| 3578 | /// In en, this message translates to: |
| 3579 | /// **'Kitten TTS'** |
| 3580 | String get engine_name_kitten; |
| 3581 | |
| 3582 | /// Kitten TTS engine tagline |
| 3583 | /// |
| 3584 | /// In en, this message translates to: |
| 3585 | /// **'High-speed neural TTS'** |
| 3586 | String get engine_tagline_kitten; |
| 3587 | |
| 3588 | /// Sherpa ONNX engine display name |
| 3589 | /// |
| 3590 | /// In en, this message translates to: |
| 3591 | /// **'Sherpa ONNX VITS'** |
| 3592 | String get engine_name_sherpa; |
| 3593 | |
| 3594 | /// Sherpa ONNX engine tagline |
| 3595 | /// |
| 3596 | /// In en, this message translates to: |
| 3597 | /// **'Offline Piper voices'** |
| 3598 | String get engine_tagline_sherpa; |
| 3599 | |
| 3600 | /// Kitten TTS voice name |
| 3601 | /// |
| 3602 | /// In en, this message translates to: |
| 3603 | /// **'Jasper'** |
| 3604 | String get voice_jasper; |
| 3605 | |
| 3606 | /// Kitten TTS voice name |
| 3607 | /// |
| 3608 | /// In en, this message translates to: |
| 3609 | /// **'Bella'** |
| 3610 | String get voice_bella; |
| 3611 | |
| 3612 | /// Kitten TTS voice name |
| 3613 | /// |
| 3614 | /// In en, this message translates to: |
| 3615 | /// **'Bruno'** |
| 3616 | String get voice_bruno; |
| 3617 | |
| 3618 | /// Kitten TTS voice name |
| 3619 | /// |
| 3620 | /// In en, this message translates to: |
| 3621 | /// **'Luna'** |
| 3622 | String get voice_luna; |
| 3623 | |
| 3624 | /// Kitten TTS voice name |
| 3625 | /// |
| 3626 | /// In en, this message translates to: |
| 3627 | /// **'Hugo'** |
| 3628 | String get voice_hugo; |
| 3629 | |
| 3630 | /// Kitten TTS voice name |
| 3631 | /// |
| 3632 | /// In en, this message translates to: |
| 3633 | /// **'Rosie'** |
| 3634 | String get voice_rosie; |
| 3635 | |
| 3636 | /// Kitten TTS voice name |
| 3637 | /// |
| 3638 | /// In en, this message translates to: |
| 3639 | /// **'Leo'** |
| 3640 | String get voice_leo; |
| 3641 | |
| 3642 | /// Kitten TTS voice name |
| 3643 | /// |
| 3644 | /// In en, this message translates to: |
| 3645 | /// **'Kiki'** |
| 3646 | String get voice_kiki; |
| 3647 | |
| 3648 | /// Piper voice name |
| 3649 | /// |
| 3650 | /// In en, this message translates to: |
| 3651 | /// **'Lessac (US)'** |
| 3652 | String get voice_lessac; |
| 3653 | |
| 3654 | /// Piper voice name |
| 3655 | /// |
| 3656 | /// In en, this message translates to: |
| 3657 | /// **'Ryan (US)'** |
| 3658 | String get voice_ryan; |
| 3659 | |
| 3660 | /// On-device model name |
| 3661 | /// |
| 3662 | /// In en, this message translates to: |
| 3663 | /// **'Qwen 3 0.6B'** |
| 3664 | String get model_qwen_3; |
| 3665 | |
| 3666 | /// Qwen 3 model description |
| 3667 | /// |
| 3668 | /// In en, this message translates to: |
| 3669 | /// **'Smallest general-purpose chat model. Fast responses, low memory usage.'** |
| 3670 | String get model_qwen_3_desc; |
| 3671 | |
| 3672 | /// Apache license label |
| 3673 | /// |
| 3674 | /// In en, this message translates to: |
| 3675 | /// **'Apache-2.0'** |
| 3676 | String get model_license_apache; |
| 3677 | |
| 3678 | /// On-device model name |
| 3679 | /// |
| 3680 | /// In en, this message translates to: |
| 3681 | /// **'Qwen 2.5 1.5B Instruct'** |
| 3682 | String get model_qwen_25; |
| 3683 | |
| 3684 | /// Qwen 2.5 model description |
| 3685 | /// |
| 3686 | /// In en, this message translates to: |
| 3687 | /// **'Balanced quality and size. Good for general conversation.'** |
| 3688 | String get model_qwen_25_desc; |
| 3689 | |
| 3690 | /// On-device model name |
| 3691 | /// |
| 3692 | /// In en, this message translates to: |
| 3693 | /// **'DeepSeek R1 Distill Qwen 1.5B'** |
| 3694 | String get model_deepseek; |
| 3695 | |
| 3696 | /// DeepSeek model description |
| 3697 | /// |
| 3698 | /// In en, this message translates to: |
| 3699 | /// **'Reasoning and chain-of-thought model. Best for logical tasks.'** |
| 3700 | String get model_deepseek_desc; |
| 3701 | |
| 3702 | /// MIT license label |
| 3703 | /// |
| 3704 | /// In en, this message translates to: |
| 3705 | /// **'MIT'** |
| 3706 | String get model_license_mit; |
| 3707 | |
| 3708 | /// On-device model name |
| 3709 | /// |
| 3710 | /// In en, this message translates to: |
| 3711 | /// **'Gemma 4 E2B Instruct'** |
| 3712 | String get model_gemma; |
| 3713 | |
| 3714 | /// Gemma model description |
| 3715 | /// |
| 3716 | /// In en, this message translates to: |
| 3717 | /// **'Google flagship model. Highest quality, requires more RAM.'** |
| 3718 | String get model_gemma_desc; |
| 3719 | |
| 3720 | /// Markdown export header |
| 3721 | /// |
| 3722 | /// In en, this message translates to: |
| 3723 | /// **'*Exported from LocalMind — {date}*'** |
| 3724 | String export_header(String date); |
| 3725 | |
| 3726 | /// Markdown export user role label |
| 3727 | /// |
| 3728 | /// In en, this message translates to: |
| 3729 | /// **'## 👤 User'** |
| 3730 | String get export_role_user; |
| 3731 | |
| 3732 | /// Markdown export assistant role label |
| 3733 | /// |
| 3734 | /// In en, this message translates to: |
| 3735 | /// **'## 🤖 Assistant'** |
| 3736 | String get export_role_assistant; |
| 3737 | |
| 3738 | /// Markdown export system role label |
| 3739 | /// |
| 3740 | /// In en, this message translates to: |
| 3741 | /// **'## ⚙️ System'** |
| 3742 | String get export_role_system; |
| 3743 | |
| 3744 | /// Markdown export tool role label |
| 3745 | /// |
| 3746 | /// In en, this message translates to: |
| 3747 | /// **'## 🔧 Tool'** |
| 3748 | String get export_role_tool; |
| 3749 | |
| 3750 | /// Text export user role prefix |
| 3751 | /// |
| 3752 | /// In en, this message translates to: |
| 3753 | /// **'[USER]'** |
| 3754 | String get export_text_user; |
| 3755 | |
| 3756 | /// Text export assistant role prefix |
| 3757 | /// |
| 3758 | /// In en, this message translates to: |
| 3759 | /// **'[ASSISTANT]'** |
| 3760 | String get export_text_assistant; |
| 3761 | |
| 3762 | /// Text export system role prefix |
| 3763 | /// |
| 3764 | /// In en, this message translates to: |
| 3765 | /// **'[SYSTEM]'** |
| 3766 | String get export_text_system; |
| 3767 | |
| 3768 | /// Text export tool role prefix |
| 3769 | /// |
| 3770 | /// In en, this message translates to: |
| 3771 | /// **'[TOOL]'** |
| 3772 | String get export_text_tool; |
| 3773 | |
| 3774 | /// Export user role label |
| 3775 | /// |
| 3776 | /// In en, this message translates to: |
| 3777 | /// **'USER'** |
| 3778 | String get export_label_user; |
| 3779 | |
| 3780 | /// Export assistant role label |
| 3781 | /// |
| 3782 | /// In en, this message translates to: |
| 3783 | /// **'ASSISTANT'** |
| 3784 | String get export_label_assistant; |
| 3785 | |
| 3786 | /// Export system role label |
| 3787 | /// |
| 3788 | /// In en, this message translates to: |
| 3789 | /// **'SYSTEM'** |
| 3790 | String get export_label_system; |
| 3791 | |
| 3792 | /// Export tool role label |
| 3793 | /// |
| 3794 | /// In en, this message translates to: |
| 3795 | /// **'TOOL'** |
| 3796 | String get export_label_tool; |
| 3797 | |
| 3798 | /// Fallback text when no model is selected |
| 3799 | /// |
| 3800 | /// In en, this message translates to: |
| 3801 | /// **'Select a model to start chatting'** |
| 3802 | String get select_model_hint; |
| 3803 | |
| 3804 | /// Test notification title |
| 3805 | /// |
| 3806 | /// In en, this message translates to: |
| 3807 | /// **'Test notification'** |
| 3808 | String get test_notification_title; |
| 3809 | |
| 3810 | /// Test notification body |
| 3811 | /// |
| 3812 | /// In en, this message translates to: |
| 3813 | /// **'This is a test notification for model download progress.'** |
| 3814 | String get test_notification_body; |
| 3815 | |
| 3816 | /// TTS background playback support status |
| 3817 | /// |
| 3818 | /// In en, this message translates to: |
| 3819 | /// **'Supports background playback as native audio'** |
| 3820 | String get tts_supports_background; |
| 3821 | |
| 3822 | /// TTS background playback support status |
| 3823 | /// |
| 3824 | /// In en, this message translates to: |
| 3825 | /// **'Note: The other TTS services support background playback as native audio.'** |
| 3826 | String get tts_other_services_background_note; |
| 3827 | |
| 3828 | /// No description provided for @gguf_imported_models_title. |
| 3829 | /// |
| 3830 | /// In en, this message translates to: |
| 3831 | /// **'Imported GGUF models'** |
| 3832 | String get gguf_imported_models_title; |
| 3833 | |
| 3834 | /// No description provided for @gguf_imported_models_empty_subtitle. |
| 3835 | /// |
| 3836 | /// In en, this message translates to: |
| 3837 | /// **'Import a GGUF from your device or add one from Hugging Face. Imported models run locally with llama.cpp.'** |
| 3838 | String get gguf_imported_models_empty_subtitle; |
| 3839 | |
| 3840 | /// No description provided for @gguf_imported_models_ready. |
| 3841 | /// |
| 3842 | /// In en, this message translates to: |
| 3843 | /// **'imported models ready for local inference.'** |
| 3844 | String get gguf_imported_models_ready; |
| 3845 | |
| 3846 | /// No description provided for @gguf_curated_models_subtitle. |
| 3847 | /// |
| 3848 | /// In en, this message translates to: |
| 3849 | /// **'Curated on-device models you can download and manage inside LocalMind.'** |
| 3850 | String get gguf_curated_models_subtitle; |
| 3851 | |
| 3852 | /// No description provided for @gguf_only_supported. |
| 3853 | /// |
| 3854 | /// In en, this message translates to: |
| 3855 | /// **'Only GGUF models are supported for this import.'** |
| 3856 | String get gguf_only_supported; |
| 3857 | |
| 3858 | /// No description provided for @gguf_imported_from_local_file. |
| 3859 | /// |
| 3860 | /// In en, this message translates to: |
| 3861 | /// **'imported from local file.'** |
| 3862 | String get gguf_imported_from_local_file; |
| 3863 | |
| 3864 | /// No description provided for @gguf_import_failed. |
| 3865 | /// |
| 3866 | /// In en, this message translates to: |
| 3867 | /// **'Failed to import GGUF model'** |
| 3868 | String get gguf_import_failed; |
| 3869 | |
| 3870 | /// No description provided for @gguf_imported_from_huggingface. |
| 3871 | /// |
| 3872 | /// In en, this message translates to: |
| 3873 | /// **'imported from Hugging Face.'** |
| 3874 | String get gguf_imported_from_huggingface; |
| 3875 | |
| 3876 | /// No description provided for @gguf_import_canceled. |
| 3877 | /// |
| 3878 | /// In en, this message translates to: |
| 3879 | /// **'GGUF import canceled.'** |
| 3880 | String get gguf_import_canceled; |
| 3881 | |
| 3882 | /// No description provided for @gguf_enter_huggingface_url. |
| 3883 | /// |
| 3884 | /// In en, this message translates to: |
| 3885 | /// **'Enter a Hugging Face GGUF URL.'** |
| 3886 | String get gguf_enter_huggingface_url; |
| 3887 | |
| 3888 | /// No description provided for @gguf_only_official_huggingface_urls. |
| 3889 | /// |
| 3890 | /// In en, this message translates to: |
| 3891 | /// **'Only official Hugging Face GGUF URLs are supported.'** |
| 3892 | String get gguf_only_official_huggingface_urls; |
| 3893 | |
| 3894 | /// No description provided for @gguf_use_https_url. |
| 3895 | /// |
| 3896 | /// In en, this message translates to: |
| 3897 | /// **'Use an HTTPS Hugging Face URL for GGUF import.'** |
| 3898 | String get gguf_use_https_url; |
| 3899 | |
| 3900 | /// No description provided for @gguf_url_must_point_to_file. |
| 3901 | /// |
| 3902 | /// In en, this message translates to: |
| 3903 | /// **'The Hugging Face URL must point directly to a .gguf file.'** |
| 3904 | String get gguf_url_must_point_to_file; |
| 3905 | |
| 3906 | /// No description provided for @gguf_unable_to_detect_file_name. |
| 3907 | /// |
| 3908 | /// In en, this message translates to: |
| 3909 | /// **'Unable to determine the GGUF file name.'** |
| 3910 | String get gguf_unable_to_detect_file_name; |
| 3911 | |
| 3912 | /// No description provided for @gguf_download_empty. |
| 3913 | /// |
| 3914 | /// In en, this message translates to: |
| 3915 | /// **'The downloaded GGUF file was empty or missing.'** |
| 3916 | String get gguf_download_empty; |
| 3917 | |
| 3918 | /// No description provided for @gguf_selected_file_missing. |
| 3919 | /// |
| 3920 | /// In en, this message translates to: |
| 3921 | /// **'Selected model file does not exist.'** |
| 3922 | String get gguf_selected_file_missing; |
| 3923 | |
| 3924 | /// No description provided for @gguf_import_action. |
| 3925 | /// |
| 3926 | /// In en, this message translates to: |
| 3927 | /// **'Import GGUF'** |
| 3928 | String get gguf_import_action; |
| 3929 | |
| 3930 | /// No description provided for @gguf_overview_title. |
| 3931 | /// |
| 3932 | /// In en, this message translates to: |
| 3933 | /// **'Bring your own GGUF models'** |
| 3934 | String get gguf_overview_title; |
| 3935 | |
| 3936 | /// No description provided for @gguf_overview_subtitle. |
| 3937 | /// |
| 3938 | /// In en, this message translates to: |
| 3939 | /// **'Import a .gguf from local storage or download one straight from Hugging Face. Imported models stay on this device and load with llama.cpp.'** |
| 3940 | String get gguf_overview_subtitle; |
| 3941 | |
| 3942 | /// No description provided for @gguf_imported_count_label. |
| 3943 | /// |
| 3944 | /// In en, this message translates to: |
| 3945 | /// **'imported'** |
| 3946 | String get gguf_imported_count_label; |
| 3947 | |
| 3948 | /// No description provided for @gguf_local_files_label. |
| 3949 | /// |
| 3950 | /// In en, this message translates to: |
| 3951 | /// **'local files'** |
| 3952 | String get gguf_local_files_label; |
| 3953 | |
| 3954 | /// No description provided for @gguf_huggingface_label. |
| 3955 | /// |
| 3956 | /// In en, this message translates to: |
| 3957 | /// **'Hugging Face'** |
| 3958 | String get gguf_huggingface_label; |
| 3959 | |
| 3960 | /// No description provided for @gguf_import_local_title. |
| 3961 | /// |
| 3962 | /// In en, this message translates to: |
| 3963 | /// **'Import local GGUF'** |
| 3964 | String get gguf_import_local_title; |
| 3965 | |
| 3966 | /// No description provided for @gguf_import_local_subtitle. |
| 3967 | /// |
| 3968 | /// In en, this message translates to: |
| 3969 | /// **'Copy a .gguf file from this device'** |
| 3970 | String get gguf_import_local_subtitle; |
| 3971 | |
| 3972 | /// No description provided for @gguf_import_huggingface_title. |
| 3973 | /// |
| 3974 | /// In en, this message translates to: |
| 3975 | /// **'Import from Hugging Face'** |
| 3976 | String get gguf_import_huggingface_title; |
| 3977 | |
| 3978 | /// No description provided for @gguf_import_huggingface_subtitle. |
| 3979 | /// |
| 3980 | /// In en, this message translates to: |
| 3981 | /// **'Paste a GGUF URL or repo path'** |
| 3982 | String get gguf_import_huggingface_subtitle; |
| 3983 | |
| 3984 | /// No description provided for @gguf_no_imported_title. |
| 3985 | /// |
| 3986 | /// In en, this message translates to: |
| 3987 | /// **'No imported GGUF models yet'** |
| 3988 | String get gguf_no_imported_title; |
| 3989 | |
| 3990 | /// No description provided for @gguf_no_imported_subtitle. |
| 3991 | /// |
| 3992 | /// In en, this message translates to: |
| 3993 | /// **'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.'** |
| 3994 | String get gguf_no_imported_subtitle; |
| 3995 | |
| 3996 | /// No description provided for @gguf_import_huggingface_dialog_title. |
| 3997 | /// |
| 3998 | /// In en, this message translates to: |
| 3999 | /// **'Import GGUF from Hugging Face'** |
| 4000 | String get gguf_import_huggingface_dialog_title; |
| 4001 | |
| 4002 | /// No description provided for @gguf_import_huggingface_dialog_subtitle. |
| 4003 | /// |
| 4004 | /// In en, this message translates to: |
| 4005 | /// **'Paste a direct GGUF URL or a Hugging Face repo path like `owner/repo/blob/main/model.gguf`. Blob links are converted automatically.'** |
| 4006 | String get gguf_import_huggingface_dialog_subtitle; |
| 4007 | |
| 4008 | /// No description provided for @gguf_url_or_repo_path. |
| 4009 | /// |
| 4010 | /// In en, this message translates to: |
| 4011 | /// **'GGUF URL or repo path'** |
| 4012 | String get gguf_url_or_repo_path; |
| 4013 | |
| 4014 | /// No description provided for @paste. |
| 4015 | /// |
| 4016 | /// In en, this message translates to: |
| 4017 | /// **'Paste'** |
| 4018 | String get paste; |
| 4019 | |
| 4020 | /// No description provided for @gguf_browse. |
| 4021 | /// |
| 4022 | /// In en, this message translates to: |
| 4023 | /// **'Browse GGUFs'** |
| 4024 | String get gguf_browse; |
| 4025 | |
| 4026 | /// No description provided for @gguf_huggingface_token_ready. |
| 4027 | /// |
| 4028 | /// In en, this message translates to: |
| 4029 | /// **'Hugging Face token ready'** |
| 4030 | String get gguf_huggingface_token_ready; |
| 4031 | |
| 4032 | /// No description provided for @gguf_huggingface_token_optional. |
| 4033 | /// |
| 4034 | /// In en, this message translates to: |
| 4035 | /// **'Token optional but recommended'** |
| 4036 | String get gguf_huggingface_token_optional; |
| 4037 | |
| 4038 | /// No description provided for @gguf_huggingface_token_ready_desc. |
| 4039 | /// |
| 4040 | /// In en, this message translates to: |
| 4041 | /// **'Your saved token will be used automatically for gated or private repositories.'** |
| 4042 | String get gguf_huggingface_token_ready_desc; |
| 4043 | |
| 4044 | /// No description provided for @gguf_huggingface_token_optional_desc. |
| 4045 | /// |
| 4046 | /// In en, this message translates to: |
| 4047 | /// **'Requires a Hugging Face token. Add one in Settings if this GGUF is gated or private.'** |
| 4048 | String get gguf_huggingface_token_optional_desc; |
| 4049 | |
| 4050 | /// No description provided for @gguf_downloading. |
| 4051 | /// |
| 4052 | /// In en, this message translates to: |
| 4053 | /// **'Downloading GGUF'** |
| 4054 | String get gguf_downloading; |
| 4055 | |
| 4056 | /// No description provided for @gguf_preparing. |
| 4057 | /// |
| 4058 | /// In en, this message translates to: |
| 4059 | /// **'Preparing'** |
| 4060 | String get gguf_preparing; |
| 4061 | |
| 4062 | /// No description provided for @gguf_preparing_download. |
| 4063 | /// |
| 4064 | /// In en, this message translates to: |
| 4065 | /// **'Preparing download...'** |
| 4066 | String get gguf_preparing_download; |
| 4067 | |
| 4068 | /// No description provided for @gguf_cancel_import. |
| 4069 | /// |
| 4070 | /// In en, this message translates to: |
| 4071 | /// **'Cancel import'** |
| 4072 | String get gguf_cancel_import; |
| 4073 | |
| 4074 | /// No description provided for @clipboard_empty. |
| 4075 | /// |
| 4076 | /// In en, this message translates to: |
| 4077 | /// **'Clipboard is empty.'** |
| 4078 | String get clipboard_empty; |
| 4079 | |
| 4080 | /// No description provided for @could_not_open_huggingface. |
| 4081 | /// |
| 4082 | /// In en, this message translates to: |
| 4083 | /// **'Could not open Hugging Face.'** |
| 4084 | String get could_not_open_huggingface; |
| 4085 | |
| 4086 | /// No description provided for @gguf_paste_url_error. |
| 4087 | /// |
| 4088 | /// In en, this message translates to: |
| 4089 | /// **'Paste a Hugging Face GGUF URL or repo path.'** |
| 4090 | String get gguf_paste_url_error; |
| 4091 | |
| 4092 | /// No description provided for @gguf_blob_link. |
| 4093 | /// |
| 4094 | /// In en, this message translates to: |
| 4095 | /// **'Blob link'** |
| 4096 | String get gguf_blob_link; |
| 4097 | |
| 4098 | /// No description provided for @gguf_repository_label. |
| 4099 | /// |
| 4100 | /// In en, this message translates to: |
| 4101 | /// **'Repository'** |
| 4102 | String get gguf_repository_label; |
| 4103 | |
| 4104 | /// No description provided for @gguf_detected_path_label. |
| 4105 | /// |
| 4106 | /// In en, this message translates to: |
| 4107 | /// **'Detected path'** |
| 4108 | String get gguf_detected_path_label; |
| 4109 | |
| 4110 | /// No description provided for @gguf_imported_section_label. |
| 4111 | /// |
| 4112 | /// In en, this message translates to: |
| 4113 | /// **'Imported GGUF'** |
| 4114 | String get gguf_imported_section_label; |
| 4115 | |
| 4116 | /// No description provided for @gguf_already_available. |
| 4117 | /// |
| 4118 | /// In en, this message translates to: |
| 4119 | /// **'Already available on this device'** |
| 4120 | String get gguf_already_available; |
| 4121 | |
| 4122 | /// No description provided for @gguf_curated_models_short. |
| 4123 | /// |
| 4124 | /// In en, this message translates to: |
| 4125 | /// **'Curated on-device models'** |
| 4126 | String get gguf_curated_models_short; |
| 4127 | |
| 4128 | /// No description provided for @gguf_vision_projector. |
| 4129 | /// |
| 4130 | /// In en, this message translates to: |
| 4131 | /// **'Vision Projector'** |
| 4132 | String get gguf_vision_projector; |
| 4133 | |
| 4134 | /// No description provided for @gguf_attach_projector. |
| 4135 | /// |
| 4136 | /// In en, this message translates to: |
| 4137 | /// **'Attach Vision Projector'** |
| 4138 | String get gguf_attach_projector; |
| 4139 | |
| 4140 | /// No description provided for @gguf_change_projector. |
| 4141 | /// |
| 4142 | /// In en, this message translates to: |
| 4143 | /// **'Change Vision Projector'** |
| 4144 | String get gguf_change_projector; |
| 4145 | |
| 4146 | /// No description provided for @gguf_remove_projector. |
| 4147 | /// |
| 4148 | /// In en, this message translates to: |
| 4149 | /// **'Remove Projector'** |
| 4150 | String get gguf_remove_projector; |
| 4151 | |
| 4152 | /// No description provided for @gguf_projector_attached. |
| 4153 | /// |
| 4154 | /// In en, this message translates to: |
| 4155 | /// **'Vision projector attached successfully'** |
| 4156 | String get gguf_projector_attached; |
| 4157 | |
| 4158 | /// No description provided for @gguf_projector_removed. |
| 4159 | /// |
| 4160 | /// In en, this message translates to: |
| 4161 | /// **'Vision projector removed'** |
| 4162 | String get gguf_projector_removed; |
| 4163 | |
| 4164 | /// No description provided for @gguf_projector_auto_detected. |
| 4165 | /// |
| 4166 | /// In en, this message translates to: |
| 4167 | /// **'Auto-detected and linked vision projector: {name}'** |
| 4168 | String gguf_projector_auto_detected(String name); |
| 4169 | |
| 4170 | /// No description provided for @gguf_is_projector_file. |
| 4171 | /// |
| 4172 | /// In en, this message translates to: |
| 4173 | /// **'The selected file is a vision projector (mmproj), not a standalone model.'** |
| 4174 | String get gguf_is_projector_file; |
| 4175 | |
| 4176 | /// No description provided for @gguf_projector_url_label. |
| 4177 | /// |
| 4178 | /// In en, this message translates to: |
| 4179 | /// **'Vision Projector URL (optional mmproj)'** |
| 4180 | String get gguf_projector_url_label; |
| 4181 | |
| 4182 | /// No description provided for @gguf_projector_url_hint. |
| 4183 | /// |
| 4184 | /// In en, this message translates to: |
| 4185 | /// **'https://huggingface.co/.../mmproj-...gguf'** |
| 4186 | String get gguf_projector_url_hint; |
| 4187 | |
| 4188 | /// No description provided for @gguf_vision_not_supported_error. |
| 4189 | /// |
| 4190 | /// In en, this message translates to: |
| 4191 | /// **'The active model does not support image attachments. Please attach a vision projector (mmproj) or select a vision-supported model.'** |
| 4192 | String get gguf_vision_not_supported_error; |
| 4193 | |
| 4194 | /// No description provided for @execute_tool_title. |
| 4195 | /// |
| 4196 | /// In en, this message translates to: |
| 4197 | /// **'Execute Tool'** |
| 4198 | String get execute_tool_title; |
| 4199 | |
| 4200 | /// No description provided for @execute_tool_request_desc. |
| 4201 | /// |
| 4202 | /// In en, this message translates to: |
| 4203 | /// **'The model is requesting to execute the following tool:'** |
| 4204 | String get execute_tool_request_desc; |
| 4205 | |
| 4206 | /// No description provided for @reject. |
| 4207 | /// |
| 4208 | /// In en, this message translates to: |
| 4209 | /// **'Reject'** |
| 4210 | String get reject; |
| 4211 | |
| 4212 | /// No description provided for @approve. |
| 4213 | /// |
| 4214 | /// In en, this message translates to: |
| 4215 | /// **'Approve'** |
| 4216 | String get approve; |
| 4217 | |
| 4218 | /// No description provided for @server_type_help. |
| 4219 | /// |
| 4220 | /// In en, this message translates to: |
| 4221 | /// **'Pick the provider before filling connection details.'** |
| 4222 | String get server_type_help; |
| 4223 | |
| 4224 | /// No description provided for @server_identity_title. |
| 4225 | /// |
| 4226 | /// In en, this message translates to: |
| 4227 | /// **'Identity'** |
| 4228 | String get server_identity_title; |
| 4229 | |
| 4230 | /// No description provided for @server_identity_desc. |
| 4231 | /// |
| 4232 | /// In en, this message translates to: |
| 4233 | /// **'Name this server and choose how it appears in the list.'** |
| 4234 | String get server_identity_desc; |
| 4235 | |
| 4236 | /// No description provided for @server_connection_title. |
| 4237 | /// |
| 4238 | /// In en, this message translates to: |
| 4239 | /// **'Connection'** |
| 4240 | String get server_connection_title; |
| 4241 | |
| 4242 | /// No description provided for @server_connection_desc. |
| 4243 | /// |
| 4244 | /// In en, this message translates to: |
| 4245 | /// **'Use the address and port exposed by your server.'** |
| 4246 | String get server_connection_desc; |
| 4247 | |
| 4248 | /// No description provided for @server_authentication_title. |
| 4249 | /// |
| 4250 | /// In en, this message translates to: |
| 4251 | /// **'Authentication'** |
| 4252 | String get server_authentication_title; |
| 4253 | |
| 4254 | /// No description provided for @server_authentication_required_desc. |
| 4255 | /// |
| 4256 | /// In en, this message translates to: |
| 4257 | /// **'OpenRouter requires an API key before testing.'** |
| 4258 | String get server_authentication_required_desc; |
| 4259 | |
| 4260 | /// No description provided for @server_authentication_required_desc_requesty. |
| 4261 | /// |
| 4262 | /// In en, this message translates to: |
| 4263 | /// **'Requesty requires an API key before testing.'** |
| 4264 | String get server_authentication_required_desc_requesty; |
| 4265 | |
| 4266 | /// No description provided for @server_authentication_optional_desc. |
| 4267 | /// |
| 4268 | /// In en, this message translates to: |
| 4269 | /// **'Leave the API key empty if this server does not require one.'** |
| 4270 | String get server_authentication_optional_desc; |
| 4271 | |
| 4272 | /// No description provided for @mcp_tools_title. |
| 4273 | /// |
| 4274 | /// In en, this message translates to: |
| 4275 | /// **'MCP Tools'** |
| 4276 | String get mcp_tools_title; |
| 4277 | |
| 4278 | /// No description provided for @available_tools. |
| 4279 | /// |
| 4280 | /// In en, this message translates to: |
| 4281 | /// **'Available tools'** |
| 4282 | String get available_tools; |
| 4283 | |
| 4284 | /// No description provided for @unable_load_tools. |
| 4285 | /// |
| 4286 | /// In en, this message translates to: |
| 4287 | /// **'Unable to load tools'** |
| 4288 | String get unable_load_tools; |
| 4289 | |
| 4290 | /// No description provided for @no_tools_registered. |
| 4291 | /// |
| 4292 | /// In en, this message translates to: |
| 4293 | /// **'No tools registered'** |
| 4294 | String get no_tools_registered; |
| 4295 | |
| 4296 | /// No description provided for @no_tools_registered_desc. |
| 4297 | /// |
| 4298 | /// In en, this message translates to: |
| 4299 | /// **'Enable the example MCP server or add MCP integrations from chat settings.'** |
| 4300 | String get no_tools_registered_desc; |
| 4301 | |
| 4302 | /// No description provided for @example_mcp_server_title. |
| 4303 | /// |
| 4304 | /// In en, this message translates to: |
| 4305 | /// **'Example MCP server'** |
| 4306 | String get example_mcp_server_title; |
| 4307 | |
| 4308 | /// No description provided for @example_mcp_server_desc. |
| 4309 | /// |
| 4310 | /// In en, this message translates to: |
| 4311 | /// **'Registers example.echo and example.word_count through the same MCP tool provider used by external servers.'** |
| 4312 | String get example_mcp_server_desc; |
| 4313 | |
| 4314 | /// No description provided for @disable_example_server. |
| 4315 | /// |
| 4316 | /// In en, this message translates to: |
| 4317 | /// **'Disable example server'** |
| 4318 | String get disable_example_server; |
| 4319 | |
| 4320 | /// No description provided for @enable_example_server. |
| 4321 | /// |
| 4322 | /// In en, this message translates to: |
| 4323 | /// **'Enable example server'** |
| 4324 | String get enable_example_server; |
| 4325 | |
| 4326 | /// No description provided for @built_in_label. |
| 4327 | /// |
| 4328 | /// In en, this message translates to: |
| 4329 | /// **'Built-in'** |
| 4330 | String get built_in_label; |
| 4331 | |
| 4332 | /// No description provided for @highlights_label. |
| 4333 | /// |
| 4334 | /// In en, this message translates to: |
| 4335 | /// **'Highlights'** |
| 4336 | String get highlights_label; |
| 4337 | |
| 4338 | /// No description provided for @built_with_label. |
| 4339 | /// |
| 4340 | /// In en, this message translates to: |
| 4341 | /// **'Built with'** |
| 4342 | String get built_with_label; |
| 4343 | |
| 4344 | /// No description provided for @local_label. |
| 4345 | /// |
| 4346 | /// In en, this message translates to: |
| 4347 | /// **'Local'** |
| 4348 | String get local_label; |
| 4349 | |
| 4350 | /// No description provided for @gguf_format_label. |
| 4351 | /// |
| 4352 | /// In en, this message translates to: |
| 4353 | /// **'GGUF'** |
| 4354 | String get gguf_format_label; |
| 4355 | |
| 4356 | /// No description provided for @tool_status_requested. |
| 4357 | /// |
| 4358 | /// In en, this message translates to: |
| 4359 | /// **'Requested'** |
| 4360 | String get tool_status_requested; |
| 4361 | |
| 4362 | /// No description provided for @tool_status_approved. |
| 4363 | /// |
| 4364 | /// In en, this message translates to: |
| 4365 | /// **'Approved'** |
| 4366 | String get tool_status_approved; |
| 4367 | |
| 4368 | /// No description provided for @tool_status_rejected. |
| 4369 | /// |
| 4370 | /// In en, this message translates to: |
| 4371 | /// **'Rejected'** |
| 4372 | String get tool_status_rejected; |
| 4373 | |
| 4374 | /// No description provided for @tool_status_running. |
| 4375 | /// |
| 4376 | /// In en, this message translates to: |
| 4377 | /// **'Running'** |
| 4378 | String get tool_status_running; |
| 4379 | |
| 4380 | /// No description provided for @tool_status_done. |
| 4381 | /// |
| 4382 | /// In en, this message translates to: |
| 4383 | /// **'Done'** |
| 4384 | String get tool_status_done; |
| 4385 | |
| 4386 | /// No description provided for @tool_status_failed. |
| 4387 | /// |
| 4388 | /// In en, this message translates to: |
| 4389 | /// **'Failed'** |
| 4390 | String get tool_status_failed; |
| 4391 | |
| 4392 | /// Long-press menu option to favorite a model |
| 4393 | /// |
| 4394 | /// In en, this message translates to: |
| 4395 | /// **'Toggle favorite'** |
| 4396 | String get model_favorite_toggle; |
| 4397 | |
| 4398 | /// Long-press menu option to make a model the default for new chats |
| 4399 | /// |
| 4400 | /// In en, this message translates to: |
| 4401 | /// **'Set as default model'** |
| 4402 | String get model_set_default; |
| 4403 | |
| 4404 | /// Long-press menu option to clear the default model |
| 4405 | /// |
| 4406 | /// In en, this message translates to: |
| 4407 | /// **'Remove as default model'** |
| 4408 | String get model_clear_default; |
| 4409 | |
| 4410 | /// Badge shown on a model that is set as the default for new chats |
| 4411 | /// |
| 4412 | /// In en, this message translates to: |
| 4413 | /// **'Default'** |
| 4414 | String get model_default_badge; |
| 4415 | |
| 4416 | /// Label for model note text field |
| 4417 | /// |
| 4418 | /// In en, this message translates to: |
| 4419 | /// **'Note'** |
| 4420 | String get model_note_label; |
| 4421 | |
| 4422 | /// Hint for model note text field |
| 4423 | /// |
| 4424 | /// In en, this message translates to: |
| 4425 | /// **'Add a note about this model…'** |
| 4426 | String get model_note_hint; |
| 4427 | |
| 4428 | /// Setting to unload every loaded model instance before loading another |
| 4429 | /// |
| 4430 | /// In en, this message translates to: |
| 4431 | /// **'Unload all models before loading a new one'** |
| 4432 | String get unload_models_before_load; |
| 4433 | |
| 4434 | /// Use private/incognito keyboard mode while in a temporary chat |
| 4435 | /// |
| 4436 | /// In en, this message translates to: |
| 4437 | /// **'Incognito keyboard in temporary chat'** |
| 4438 | String get temp_chat_keyboard_incognito; |
| 4439 | |
| 4440 | /// Description for temporary chat incognito keyboard setting |
| 4441 | /// |
| 4442 | /// In en, this message translates to: |
| 4443 | /// **'Disables keyboard learning and suggestions in temporary chats (e.g. SwiftKey incognito).'** |
| 4444 | String get temp_chat_keyboard_incognito_desc; |
| 4445 | |
| 4446 | /// Reopen the most recently active conversation when the app starts |
| 4447 | /// |
| 4448 | /// In en, this message translates to: |
| 4449 | /// **'Resume last chat on launch'** |
| 4450 | String get resume_last_chat; |
| 4451 | |
| 4452 | /// Description for resume last chat setting |
| 4453 | /// |
| 4454 | /// In en, this message translates to: |
| 4455 | /// **'Restore your last open conversation when reopening the app.'** |
| 4456 | String get resume_last_chat_desc; |
| 4457 | |
| 4458 | /// Export conversations and personas to a JSON file |
| 4459 | /// |
| 4460 | /// In en, this message translates to: |
| 4461 | /// **'Export all data'** |
| 4462 | String get export_all_data; |
| 4463 | |
| 4464 | /// Import conversations and personas from a JSON backup |
| 4465 | /// |
| 4466 | /// In en, this message translates to: |
| 4467 | /// **'Import all data'** |
| 4468 | String get import_all_data; |
| 4469 | |
| 4470 | /// Snackbar after exporting backup |
| 4471 | /// |
| 4472 | /// In en, this message translates to: |
| 4473 | /// **'Backup exported successfully'** |
| 4474 | String get export_data_success; |
| 4475 | |
| 4476 | /// Snackbar after importing backup |
| 4477 | /// |
| 4478 | /// In en, this message translates to: |
| 4479 | /// **'Backup imported successfully'** |
| 4480 | String get import_data_success; |
| 4481 | |
| 4482 | /// Snackbar when import fails |
| 4483 | /// |
| 4484 | /// In en, this message translates to: |
| 4485 | /// **'Failed to import backup: {error}'** |
| 4486 | String import_data_failed(String error); |
| 4487 | |
| 4488 | /// No description provided for @import_data_confirm. |
| 4489 | /// |
| 4490 | /// In en, this message translates to: |
| 4491 | /// **'Import conversations and custom personas from this backup? Existing items with the same IDs will be updated.'** |
| 4492 | String get import_data_confirm; |
| 4493 | |
| 4494 | /// No description provided for @import_settings_confirm. |
| 4495 | /// |
| 4496 | /// In en, this message translates to: |
| 4497 | /// **'Replace current settings with the imported backup?'** |
| 4498 | String get import_settings_confirm; |
| 4499 | |
| 4500 | /// No description provided for @export_conversations. |
| 4501 | /// |
| 4502 | /// In en, this message translates to: |
| 4503 | /// **'Export conversations'** |
| 4504 | String get export_conversations; |
| 4505 | |
| 4506 | /// No description provided for @import_conversations. |
| 4507 | /// |
| 4508 | /// In en, this message translates to: |
| 4509 | /// **'Import conversations'** |
| 4510 | String get import_conversations; |
| 4511 | |
| 4512 | /// No description provided for @export_personas. |
| 4513 | /// |
| 4514 | /// In en, this message translates to: |
| 4515 | /// **'Export personas'** |
| 4516 | String get export_personas; |
| 4517 | |
| 4518 | /// No description provided for @import_personas. |
| 4519 | /// |
| 4520 | /// In en, this message translates to: |
| 4521 | /// **'Import personas'** |
| 4522 | String get import_personas; |
| 4523 | |
| 4524 | /// No description provided for @export_settings. |
| 4525 | /// |
| 4526 | /// In en, this message translates to: |
| 4527 | /// **'Export settings'** |
| 4528 | String get export_settings; |
| 4529 | |
| 4530 | /// No description provided for @import_settings. |
| 4531 | /// |
| 4532 | /// In en, this message translates to: |
| 4533 | /// **'Import settings'** |
| 4534 | String get import_settings; |
| 4535 | |
| 4536 | /// No description provided for @export_all_zip. |
| 4537 | /// |
| 4538 | /// In en, this message translates to: |
| 4539 | /// **'Export all (ZIP)'** |
| 4540 | String get export_all_zip; |
| 4541 | |
| 4542 | /// No description provided for @import_all_zip. |
| 4543 | /// |
| 4544 | /// In en, this message translates to: |
| 4545 | /// **'Import all (ZIP)'** |
| 4546 | String get import_all_zip; |
| 4547 | |
| 4548 | /// No description provided for @duplicate_chat. |
| 4549 | /// |
| 4550 | /// In en, this message translates to: |
| 4551 | /// **'Duplicate chat'** |
| 4552 | String get duplicate_chat; |
| 4553 | |
| 4554 | /// No description provided for @duplicate_chat_success. |
| 4555 | /// |
| 4556 | /// In en, this message translates to: |
| 4557 | /// **'Chat duplicated'** |
| 4558 | String get duplicate_chat_success; |
| 4559 | |
| 4560 | /// No description provided for @move_to_folder. |
| 4561 | /// |
| 4562 | /// In en, this message translates to: |
| 4563 | /// **'Move to folder'** |
| 4564 | String get move_to_folder; |
| 4565 | |
| 4566 | /// No description provided for @remove_from_folder. |
| 4567 | /// |
| 4568 | /// In en, this message translates to: |
| 4569 | /// **'Remove from folder'** |
| 4570 | String get remove_from_folder; |
| 4571 | |
| 4572 | /// No description provided for @create_folder. |
| 4573 | /// |
| 4574 | /// In en, this message translates to: |
| 4575 | /// **'Create folder'** |
| 4576 | String get create_folder; |
| 4577 | |
| 4578 | /// No description provided for @new_folder. |
| 4579 | /// |
| 4580 | /// In en, this message translates to: |
| 4581 | /// **'New folder'** |
| 4582 | String get new_folder; |
| 4583 | |
| 4584 | /// No description provided for @folder_name_hint. |
| 4585 | /// |
| 4586 | /// In en, this message translates to: |
| 4587 | /// **'Folder name'** |
| 4588 | String get folder_name_hint; |
| 4589 | |
| 4590 | /// No description provided for @all_chats. |
| 4591 | /// |
| 4592 | /// In en, this message translates to: |
| 4593 | /// **'All'** |
| 4594 | String get all_chats; |
| 4595 | |
| 4596 | /// No description provided for @unfiled_chats. |
| 4597 | /// |
| 4598 | /// In en, this message translates to: |
| 4599 | /// **'Unfiled'** |
| 4600 | String get unfiled_chats; |
| 4601 | |
| 4602 | /// No description provided for @create. |
| 4603 | /// |
| 4604 | /// In en, this message translates to: |
| 4605 | /// **'Create'** |
| 4606 | String get create; |
| 4607 | |
| 4608 | /// No description provided for @server_path_prefix_label. |
| 4609 | /// |
| 4610 | /// In en, this message translates to: |
| 4611 | /// **'API path prefix'** |
| 4612 | String get server_path_prefix_label; |
| 4613 | |
| 4614 | /// No description provided for @server_path_prefix_hint. |
| 4615 | /// |
| 4616 | /// In en, this message translates to: |
| 4617 | /// **'/your-secret-token'** |
| 4618 | String get server_path_prefix_hint; |
| 4619 | |
| 4620 | /// No description provided for @search_message_contents. |
| 4621 | /// |
| 4622 | /// In en, this message translates to: |
| 4623 | /// **'Search message contents'** |
| 4624 | String get search_message_contents; |
| 4625 | |
| 4626 | /// No description provided for @message_search_results. |
| 4627 | /// |
| 4628 | /// In en, this message translates to: |
| 4629 | /// **'Message matches'** |
| 4630 | String get message_search_results; |
| 4631 | |
| 4632 | /// No description provided for @saved_messages_title. |
| 4633 | /// |
| 4634 | /// In en, this message translates to: |
| 4635 | /// **'Saved Messages'** |
| 4636 | String get saved_messages_title; |
| 4637 | |
| 4638 | /// No description provided for @nav_saved_messages. |
| 4639 | /// |
| 4640 | /// In en, this message translates to: |
| 4641 | /// **'Saved Messages'** |
| 4642 | String get nav_saved_messages; |
| 4643 | |
| 4644 | /// No description provided for @saved_messages_empty. |
| 4645 | /// |
| 4646 | /// In en, this message translates to: |
| 4647 | /// **'No saved messages yet. Bookmark a message from its options menu.'** |
| 4648 | String get saved_messages_empty; |
| 4649 | |
| 4650 | /// No description provided for @save_message. |
| 4651 | /// |
| 4652 | /// In en, this message translates to: |
| 4653 | /// **'Save message'** |
| 4654 | String get save_message; |
| 4655 | |
| 4656 | /// No description provided for @message_saved. |
| 4657 | /// |
| 4658 | /// In en, this message translates to: |
| 4659 | /// **'Message saved'** |
| 4660 | String get message_saved; |
| 4661 | |
| 4662 | /// No description provided for @token_count. |
| 4663 | /// |
| 4664 | /// In en, this message translates to: |
| 4665 | /// **'{count} tokens'** |
| 4666 | String token_count(int count); |
| 4667 | |
| 4668 | /// No description provided for @estimated_token_count. |
| 4669 | /// |
| 4670 | /// In en, this message translates to: |
| 4671 | /// **'~{count} tokens (estimated)'** |
| 4672 | String estimated_token_count(int count); |
| 4673 | |
| 4674 | /// No description provided for @test_tts_section_title. |
| 4675 | /// |
| 4676 | /// In en, this message translates to: |
| 4677 | /// **'Test voice'** |
| 4678 | String get test_tts_section_title; |
| 4679 | |
| 4680 | /// No description provided for @test_tts_hint. |
| 4681 | /// |
| 4682 | /// In en, this message translates to: |
| 4683 | /// **'Enter text to hear the current TTS engine…'** |
| 4684 | String get test_tts_hint; |
| 4685 | |
| 4686 | /// No description provided for @test_speak_button. |
| 4687 | /// |
| 4688 | /// In en, this message translates to: |
| 4689 | /// **'Speak'** |
| 4690 | String get test_speak_button; |
| 4691 | |
| 4692 | /// No description provided for @scroll_to_bottom. |
| 4693 | /// |
| 4694 | /// In en, this message translates to: |
| 4695 | /// **'Scroll to bottom'** |
| 4696 | String get scroll_to_bottom; |
| 4697 | |
| 4698 | /// No description provided for @generate_ai_response. |
| 4699 | /// |
| 4700 | /// In en, this message translates to: |
| 4701 | /// **'Generate AI response'** |
| 4702 | String get generate_ai_response; |
| 4703 | |
| 4704 | /// No description provided for @no_response. |
| 4705 | /// |
| 4706 | /// In en, this message translates to: |
| 4707 | /// **'No response'** |
| 4708 | String get no_response; |
| 4709 | |
| 4710 | /// No description provided for @export. |
| 4711 | /// |
| 4712 | /// In en, this message translates to: |
| 4713 | /// **'Export'** |
| 4714 | String get export; |
| 4715 | |
| 4716 | /// No description provided for @import. |
| 4717 | /// |
| 4718 | /// In en, this message translates to: |
| 4719 | /// **'Import'** |
| 4720 | String get import; |
| 4721 | |
| 4722 | /// No description provided for @conversations_label. |
| 4723 | /// |
| 4724 | /// In en, this message translates to: |
| 4725 | /// **'Conversations'** |
| 4726 | String get conversations_label; |
| 4727 | |
| 4728 | /// No description provided for @personas_label. |
| 4729 | /// |
| 4730 | /// In en, this message translates to: |
| 4731 | /// **'Personas'** |
| 4732 | String get personas_label; |
| 4733 | |
| 4734 | /// No description provided for @settings_label. |
| 4735 | /// |
| 4736 | /// In en, this message translates to: |
| 4737 | /// **'Settings'** |
| 4738 | String get settings_label; |
| 4739 | |
| 4740 | /// No description provided for @export_conversation. |
| 4741 | /// |
| 4742 | /// In en, this message translates to: |
| 4743 | /// **'Export conversation'** |
| 4744 | String get export_conversation; |
| 4745 | |
| 4746 | /// No description provided for @tts_process_markdown. |
| 4747 | /// |
| 4748 | /// In en, this message translates to: |
| 4749 | /// **'Process markdown for speech'** |
| 4750 | String get tts_process_markdown; |
| 4751 | |
| 4752 | /// No description provided for @tts_process_markdown_desc. |
| 4753 | /// |
| 4754 | /// In en, this message translates to: |
| 4755 | /// **'Strip formatting like **bold** before reading aloud'** |
| 4756 | String get tts_process_markdown_desc; |
| 4757 | |
| 4758 | /// No description provided for @tts_skip_seconds. |
| 4759 | /// |
| 4760 | /// In en, this message translates to: |
| 4761 | /// **'Skip interval'** |
| 4762 | String get tts_skip_seconds; |
| 4763 | |
| 4764 | /// No description provided for @tts_skip_seconds_desc. |
| 4765 | /// |
| 4766 | /// In en, this message translates to: |
| 4767 | /// **'Forward and rewind jump size during playback'** |
| 4768 | String get tts_skip_seconds_desc; |
| 4769 | |
| 4770 | /// No description provided for @tts_skip_seconds_value. |
| 4771 | /// |
| 4772 | /// In en, this message translates to: |
| 4773 | /// **'{seconds}s'** |
| 4774 | String tts_skip_seconds_value(int seconds); |
| 4775 | |
| 4776 | /// No description provided for @preview_system_prompts. |
| 4777 | /// |
| 4778 | /// In en, this message translates to: |
| 4779 | /// **'Preview system prompts'** |
| 4780 | String get preview_system_prompts; |
| 4781 | |
| 4782 | /// No description provided for @welcome_message_1. |
| 4783 | /// |
| 4784 | /// In en, this message translates to: |
| 4785 | /// **'What can I help you with today?'** |
| 4786 | String get welcome_message_1; |
| 4787 | |
| 4788 | /// No description provided for @welcome_message_2. |
| 4789 | /// |
| 4790 | /// In en, this message translates to: |
| 4791 | /// **'Ask me anything — I\'m ready when you are.'** |
| 4792 | String get welcome_message_2; |
| 4793 | |
| 4794 | /// No description provided for @welcome_message_3. |
| 4795 | /// |
| 4796 | /// In en, this message translates to: |
| 4797 | /// **'Your data is processed locally and never leaves your device.'** |
| 4798 | String get welcome_message_3; |
| 4799 | |
| 4800 | /// No description provided for @welcome_message_4. |
| 4801 | /// |
| 4802 | /// In en, this message translates to: |
| 4803 | /// **'Need ideas? Try one of the quick prompts.'** |
| 4804 | String get welcome_message_4; |
| 4805 | |
| 4806 | /// No description provided for @temporary_chat. |
| 4807 | /// |
| 4808 | /// In en, this message translates to: |
| 4809 | /// **'Temporary chat'** |
| 4810 | String get temporary_chat; |
| 4811 | |
| 4812 | /// No description provided for @temporary_chat_desc. |
| 4813 | /// |
| 4814 | /// In en, this message translates to: |
| 4815 | /// **'Chats aren\'t saved to history.'** |
| 4816 | String get temporary_chat_desc; |
| 4817 | |
| 4818 | /// No description provided for @temporary_chat_banner. |
| 4819 | /// |
| 4820 | /// In en, this message translates to: |
| 4821 | /// **'Temporary chat — not saved to history'** |
| 4822 | String get temporary_chat_banner; |
| 4823 | |
| 4824 | /// No description provided for @temporary_chat_save_warning_title. |
| 4825 | /// |
| 4826 | /// In en, this message translates to: |
| 4827 | /// **'Save message in temporary chat?'** |
| 4828 | String get temporary_chat_save_warning_title; |
| 4829 | |
| 4830 | /// No description provided for @temporary_chat_save_warning_body. |
| 4831 | /// |
| 4832 | /// In en, this message translates to: |
| 4833 | /// **'This chat is temporary and hidden from history. The saved message will still appear in Saved Messages.'** |
| 4834 | String get temporary_chat_save_warning_body; |
| 4835 | |
| 4836 | /// No description provided for @save_to_history. |
| 4837 | /// |
| 4838 | /// In en, this message translates to: |
| 4839 | /// **'Save to history'** |
| 4840 | String get save_to_history; |
| 4841 | |
| 4842 | /// No description provided for @share_conversation. |
| 4843 | /// |
| 4844 | /// In en, this message translates to: |
| 4845 | /// **'Share conversation'** |
| 4846 | String get share_conversation; |
| 4847 | |
| 4848 | /// No description provided for @download_tts_audio. |
| 4849 | /// |
| 4850 | /// In en, this message translates to: |
| 4851 | /// **'Download audio'** |
| 4852 | String get download_tts_audio; |
| 4853 | |
| 4854 | /// No description provided for @tts_download_unavailable. |
| 4855 | /// |
| 4856 | /// In en, this message translates to: |
| 4857 | /// **'Download is only available for Piper and Kitten TTS'** |
| 4858 | String get tts_download_unavailable; |
| 4859 | |
| 4860 | /// No description provided for @tts_download_no_audio. |
| 4861 | /// |
| 4862 | /// In en, this message translates to: |
| 4863 | /// **'No audio available to download yet'** |
| 4864 | String get tts_download_no_audio; |
| 4865 | |
| 4866 | /// No description provided for @tts_download_success. |
| 4867 | /// |
| 4868 | /// In en, this message translates to: |
| 4869 | /// **'Audio saved'** |
| 4870 | String get tts_download_success; |
| 4871 | |
| 4872 | /// No description provided for @return_to_chat. |
| 4873 | /// |
| 4874 | /// In en, this message translates to: |
| 4875 | /// **'Return to chat'** |
| 4876 | String get return_to_chat; |
| 4877 | |
| 4878 | /// No description provided for @return_to_temp_chat. |
| 4879 | /// |
| 4880 | /// In en, this message translates to: |
| 4881 | /// **'Return to temporary chat'** |
| 4882 | String get return_to_temp_chat; |
| 4883 | |
| 4884 | /// No description provided for @insert_saved_message. |
| 4885 | /// |
| 4886 | /// In en, this message translates to: |
| 4887 | /// **'Insert saved message'** |
| 4888 | String get insert_saved_message; |
| 4889 | |
| 4890 | /// No description provided for @insert_saved_message_desc. |
| 4891 | /// |
| 4892 | /// In en, this message translates to: |
| 4893 | /// **'Choose a saved message to add to your input'** |
| 4894 | String get insert_saved_message_desc; |
| 4895 | |
| 4896 | /// No description provided for @model_info. |
| 4897 | /// |
| 4898 | /// In en, this message translates to: |
| 4899 | /// **'Model info'** |
| 4900 | String get model_info; |
| 4901 | |
| 4902 | /// No description provided for @model_name. |
| 4903 | /// |
| 4904 | /// In en, this message translates to: |
| 4905 | /// **'Model name'** |
| 4906 | String get model_name; |
| 4907 | |
| 4908 | /// No description provided for @model_identifier. |
| 4909 | /// |
| 4910 | /// In en, this message translates to: |
| 4911 | /// **'Identifier'** |
| 4912 | String get model_identifier; |
| 4913 | |
| 4914 | /// No description provided for @model_capabilities. |
| 4915 | /// |
| 4916 | /// In en, this message translates to: |
| 4917 | /// **'Capabilities'** |
| 4918 | String get model_capabilities; |
| 4919 | |
| 4920 | /// No description provided for @model_api_pricing. |
| 4921 | /// |
| 4922 | /// In en, this message translates to: |
| 4923 | /// **'API pricing (per 1M tokens)'** |
| 4924 | String get model_api_pricing; |
| 4925 | |
| 4926 | /// No description provided for @not_available. |
| 4927 | /// |
| 4928 | /// In en, this message translates to: |
| 4929 | /// **'Not available'** |
| 4930 | String get not_available; |
| 4931 | |
| 4932 | /// No description provided for @save_message_folders. |
| 4933 | /// |
| 4934 | /// In en, this message translates to: |
| 4935 | /// **'Save message'** |
| 4936 | String get save_message_folders; |
| 4937 | |
| 4938 | /// No description provided for @remove_from_saved. |
| 4939 | /// |
| 4940 | /// In en, this message translates to: |
| 4941 | /// **'Remove from saved'** |
| 4942 | String get remove_from_saved; |
| 4943 | |
| 4944 | /// No description provided for @message_already_saved. |
| 4945 | /// |
| 4946 | /// In en, this message translates to: |
| 4947 | /// **'Saved'** |
| 4948 | String get message_already_saved; |
| 4949 | |
| 4950 | /// No description provided for @stream_ttft. |
| 4951 | /// |
| 4952 | /// In en, this message translates to: |
| 4953 | /// **'Time to first token'** |
| 4954 | String get stream_ttft; |
| 4955 | |
| 4956 | /// No description provided for @stream_tokens_per_sec. |
| 4957 | /// |
| 4958 | /// In en, this message translates to: |
| 4959 | /// **'Tokens per second'** |
| 4960 | String get stream_tokens_per_sec; |
| 4961 | |
| 4962 | /// No description provided for @stream_stop_reason. |
| 4963 | /// |
| 4964 | /// In en, this message translates to: |
| 4965 | /// **'Stop reason'** |
| 4966 | String get stream_stop_reason; |
| 4967 | |
| 4968 | /// No description provided for @stream_input_tokens. |
| 4969 | /// |
| 4970 | /// In en, this message translates to: |
| 4971 | /// **'Input tokens'** |
| 4972 | String get stream_input_tokens; |
| 4973 | |
| 4974 | /// No description provided for @stream_output_tokens. |
| 4975 | /// |
| 4976 | /// In en, this message translates to: |
| 4977 | /// **'Output tokens'** |
| 4978 | String get stream_output_tokens; |
| 4979 | |
| 4980 | /// No description provided for @stream_generation_time. |
| 4981 | /// |
| 4982 | /// In en, this message translates to: |
| 4983 | /// **'Generation time'** |
| 4984 | String get stream_generation_time; |
| 4985 | |
| 4986 | /// No description provided for @attach_image. |
| 4987 | /// |
| 4988 | /// In en, this message translates to: |
| 4989 | /// **'Photos'** |
| 4990 | String get attach_image; |
| 4991 | |
| 4992 | /// No description provided for @attach_text_document. |
| 4993 | /// |
| 4994 | /// In en, this message translates to: |
| 4995 | /// **'Documents'** |
| 4996 | String get attach_text_document; |
| 4997 | |
| 4998 | /// No description provided for @attach_shortcut_images. |
| 4999 | /// |
| 5000 | /// In en, this message translates to: |
Showing first 5,000 of 6,071 lines.
View raw