Files
iiEsaywebUIapp/lib/l10n/app_localizations.dart

2195 lines
60 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:intl/intl.dart' as intl;
import 'app_localizations_de.dart';
import 'app_localizations_en.dart';
import 'app_localizations_es.dart';
import 'app_localizations_fr.dart';
import 'app_localizations_it.dart';
import 'app_localizations_nl.dart';
import 'app_localizations_ru.dart';
import 'app_localizations_zh.dart';
// ignore_for_file: type=lint
/// Callers can lookup localized strings with an instance of AppLocalizations
/// returned by `AppLocalizations.of(context)`.
///
/// Applications need to include `AppLocalizations.delegate()` in their app's
/// `localizationDelegates` list, and the locales they support in the app's
/// `supportedLocales` list. For example:
///
/// ```dart
/// import 'l10n/app_localizations.dart';
///
/// return MaterialApp(
/// localizationsDelegates: AppLocalizations.localizationsDelegates,
/// supportedLocales: AppLocalizations.supportedLocales,
/// home: MyApplicationHome(),
/// );
/// ```
///
/// ## Update pubspec.yaml
///
/// Please make sure to update your pubspec.yaml to include the following
/// packages:
///
/// ```yaml
/// dependencies:
/// # Internationalization support.
/// flutter_localizations:
/// sdk: flutter
/// intl: any # Use the pinned version from flutter_localizations
///
/// # Rest of dependencies
/// ```
///
/// ## iOS Applications
///
/// iOS applications define key application metadata, including supported
/// locales, in an Info.plist file that is built into the application bundle.
/// To configure the locales supported by your app, youll need to edit this
/// file.
///
/// First, open your projects ios/Runner.xcworkspace Xcode workspace file.
/// Then, in the Project Navigator, open the Info.plist file under the Runner
/// projects Runner folder.
///
/// Next, select the Information Property List item, select Add Item from the
/// Editor menu, then select Localizations from the pop-up menu.
///
/// Select and expand the newly-created Localizations item then, for each
/// locale your application supports, add a new item and select the locale
/// you wish to add from the pop-up menu in the Value field. This list should
/// be consistent with the languages listed in the AppLocalizations.supportedLocales
/// property.
abstract class AppLocalizations {
AppLocalizations(String locale)
: localeName = intl.Intl.canonicalizedLocale(locale.toString());
final String localeName;
static AppLocalizations? of(BuildContext context) {
return Localizations.of<AppLocalizations>(context, AppLocalizations);
}
static const LocalizationsDelegate<AppLocalizations> delegate =
_AppLocalizationsDelegate();
/// A list of this localizations delegate along with the default localizations
/// delegates.
///
/// Returns a list of localizations delegates containing this delegate along with
/// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate,
/// and GlobalWidgetsLocalizations.delegate.
///
/// Additional delegates can be added by appending to this list in
/// MaterialApp. This list does not have to be used at all if a custom list
/// of delegates is preferred or required.
static const List<LocalizationsDelegate<dynamic>> localizationsDelegates =
<LocalizationsDelegate<dynamic>>[
delegate,
GlobalMaterialLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
];
/// A list of this localizations delegate's supported locales.
static const List<Locale> supportedLocales = <Locale>[
Locale('en'),
Locale('de'),
Locale('fr'),
Locale('it'),
Locale('zh'),
Locale('ru'),
Locale('nl'),
Locale('es'),
];
/// Application name displayed in the app and OS UI.
///
/// In en, this message translates to:
/// **'Conduit'**
String get appTitle;
/// Button label to try an action again.
///
/// In en, this message translates to:
/// **'Retry'**
String get retry;
/// Back navigation label/tooltip.
///
/// In en, this message translates to:
/// **'Back'**
String get back;
/// Profile tab title.
///
/// In en, this message translates to:
/// **'You'**
String get you;
/// Progress message while fetching profile data.
///
/// In en, this message translates to:
/// **'Loading profile...'**
String get loadingProfile;
/// Error title shown when profile request fails.
///
/// In en, this message translates to:
/// **'Unable to load profile'**
String get unableToLoadProfile;
/// Generic connectivity hint after an error.
///
/// In en, this message translates to:
/// **'Please check your connection and try again'**
String get pleaseCheckConnection;
/// Title shown when the configured server is unreachable
///
/// In en, this message translates to:
/// **'Can\'t reach your server'**
String get connectionIssueTitle;
/// Subtitle explaining available actions when the server cannot be reached
///
/// In en, this message translates to:
/// **'Reconnect to continue or sign out to choose a different server.'**
String get connectionIssueSubtitle;
/// Section header for account-related options.
///
/// In en, this message translates to:
/// **'Account'**
String get account;
/// Section header inviting the user to financially support the project.
///
/// In en, this message translates to:
/// **'Support Conduit'**
String get supportConduit;
/// Subtitle explaining why donations are helpful.
///
/// In en, this message translates to:
/// **'Keep Conduit independent by funding ongoing development.'**
String get supportConduitSubtitle;
/// Tile title linking to the GitHub Sponsors page.
///
/// In en, this message translates to:
/// **'GitHub Sponsors'**
String get githubSponsorsTitle;
/// Subtitle explaining the impact of recurring sponsorship.
///
/// In en, this message translates to:
/// **'Become a recurring sponsor to fund roadmap items.'**
String get githubSponsorsSubtitle;
/// Tile title linking to the Buy Me a Coffee page.
///
/// In en, this message translates to:
/// **'Buy Me a Coffee'**
String get buyMeACoffeeTitle;
/// Subtitle encouraging one-time donations via Buy Me a Coffee.
///
/// In en, this message translates to:
/// **'Make a one-time donation to say thanks.'**
String get buyMeACoffeeSubtitle;
/// Button/title for signing out of the app.
///
/// In en, this message translates to:
/// **'Sign Out'**
String get signOut;
/// Subtitle explaining the sign-out action.
///
/// In en, this message translates to:
/// **'End your session'**
String get endYourSession;
/// Label for choosing a default AI model.
///
/// In en, this message translates to:
/// **'Default Model'**
String get defaultModel;
/// Option to let the app pick a suitable model automatically.
///
/// In en, this message translates to:
/// **'Auto-select'**
String get autoSelect;
/// Progress message while fetching model list.
///
/// In en, this message translates to:
/// **'Loading models...'**
String get loadingModels;
/// Error message shown when model list cannot be retrieved.
///
/// In en, this message translates to:
/// **'Failed to load models'**
String get failedToLoadModels;
/// Header above a list of models to select from.
///
/// In en, this message translates to:
/// **'Available Models'**
String get availableModels;
/// Capability chip label for models that support multimodal input.
///
/// In en, this message translates to:
/// **'Multimodal'**
String get modelCapabilityMultimodal;
/// Capability chip label for models that support reasoning features.
///
/// In en, this message translates to:
/// **'Reasoning'**
String get modelCapabilityReasoning;
/// Shown when a search returns no matches.
///
/// In en, this message translates to:
/// **'No results'**
String get noResults;
/// Hint text for model search input.
///
/// In en, this message translates to:
/// **'Search models...'**
String get searchModels;
/// Generic error message for unexpected failures.
///
/// In en, this message translates to:
/// **'Something went wrong. Please try again.'**
String get errorMessage;
/// Accessible label for a generic Close button.
///
/// In en, this message translates to:
/// **'Close'**
String get closeButtonSemantic;
/// Shown while loading page content.
///
/// In en, this message translates to:
/// **'Loading content'**
String get loadingContent;
/// Short loading label used for accessibility.
///
/// In en, this message translates to:
/// **'Loading'**
String get loadingShort;
/// Screen reader announcement when loading a resource.
///
/// In en, this message translates to:
/// **'Loading: {message}'**
String loadingAnnouncement(String message);
/// Screen reader announcement for an error.
///
/// In en, this message translates to:
/// **'Error: {error}'**
String errorAnnouncement(String error);
/// Screen reader announcement for an error with a follow-up suggestion.
///
/// In en, this message translates to:
/// **'Error: {error}. {suggestion}'**
String errorAnnouncementWithSuggestion(String error, String suggestion);
/// Screen reader announcement for successful actions.
///
/// In en, this message translates to:
/// **'Success: {message}'**
String successAnnouncement(String message);
/// Placeholder text when a list is empty.
///
/// In en, this message translates to:
/// **'No items'**
String get noItems;
/// Alternative empty-state description.
///
/// In en, this message translates to:
/// **'No items to display'**
String get noItemsToDisplay;
/// Section for knowledge base content.
///
/// In en, this message translates to:
/// **'Knowledge Base'**
String get knowledgeBase;
/// Header above list of attached files in compose area.
///
/// In en, this message translates to:
/// **'Attachments'**
String get attachments;
/// Action to open camera and capture a new photo.
///
/// In en, this message translates to:
/// **'Take a photo'**
String get takePhoto;
/// Generic document label used in UI.
///
/// In en, this message translates to:
/// **'Document'**
String get document;
/// Button/back label to return to server configuration flow.
///
/// In en, this message translates to:
/// **'Back to server setup'**
String get backToServerSetup;
/// Status label indicating a successful server connection.
///
/// In en, this message translates to:
/// **'Connected to Server'**
String get connectedToServer;
/// Button/heading for sign-in flows.
///
/// In en, this message translates to:
/// **'Sign In'**
String get signIn;
/// Instructional text on the sign-in screen.
///
/// In en, this message translates to:
/// **'Enter your credentials to access your AI conversations'**
String get enterCredentials;
/// Header for credential input section.
///
/// In en, this message translates to:
/// **'Credentials'**
String get credentials;
/// Label for API key input field.
///
/// In en, this message translates to:
/// **'API Key'**
String get apiKey;
/// Label for username/email input field.
///
/// In en, this message translates to:
/// **'Username or Email'**
String get usernameOrEmail;
/// Label for password input field.
///
/// In en, this message translates to:
/// **'Password'**
String get password;
/// Alternative sign-in method using an API key.
///
/// In en, this message translates to:
/// **'Sign in with API Key'**
String get signInWithApiKey;
/// Call-to-action button for server connection.
///
/// In en, this message translates to:
/// **'Connect to Server'**
String get connectToServer;
/// Instruction telling user to provide server URL to begin.
///
/// In en, this message translates to:
/// **'Enter your Open-WebUI server address to get started'**
String get enterServerAddress;
/// Label for server URL field.
///
/// In en, this message translates to:
/// **'Server URL'**
String get serverUrl;
/// Hint text showing example server URL format.
///
/// In en, this message translates to:
/// **'https://your-server.com'**
String get serverUrlHint;
/// Semantic/ARIA label instructing to enter server URL or IP.
///
/// In en, this message translates to:
/// **'Enter your server URL or IP address'**
String get enterServerUrlSemantic;
/// Label for custom header key.
///
/// In en, this message translates to:
/// **'Header Name'**
String get headerName;
/// Label for custom header value.
///
/// In en, this message translates to:
/// **'Header Value'**
String get headerValue;
/// Hint text with example header values, including API key or Bearer token.
///
/// In en, this message translates to:
/// **'api-key-123 or Bearer token'**
String get headerValueHint;
/// Button to add a new custom header row.
///
/// In en, this message translates to:
/// **'Add header'**
String get addHeader;
/// Warning when custom header limit is reached.
///
/// In en, this message translates to:
/// **'Maximum headers reached'**
String get maximumHeadersReached;
/// Action to remove a custom header row.
///
/// In en, this message translates to:
/// **'Remove header'**
String get removeHeader;
/// Status while attempting to connect to server.
///
/// In en, this message translates to:
/// **'Connecting...'**
String get connecting;
/// Primary action button to initiate server connection.
///
/// In en, this message translates to:
/// **'Connect to Server'**
String get connectToServerButton;
/// Banner/text indicating the app runs in demo mode.
///
/// In en, this message translates to:
/// **'Demo Mode Active'**
String get demoModeActive;
/// CTA to bypass server configuration and enter demo mode.
///
/// In en, this message translates to:
/// **'Skip server setup and try the demo'**
String get skipServerSetupTryDemo;
/// Button to enter demo mode.
///
/// In en, this message translates to:
/// **'Enter Demo'**
String get enterDemo;
/// Small badge label for demo content.
///
/// In en, this message translates to:
/// **'Demo'**
String get demoBadge;
/// Validation error when the server does not resemble Open-WebUI.
///
/// In en, this message translates to:
/// **'This does not appear to be an Open-WebUI server.'**
String get serverNotOpenWebUI;
/// Validation message for empty server URL.
///
/// In en, this message translates to:
/// **'Server URL cannot be empty'**
String get serverUrlEmpty;
/// Validation message when URL format is incorrect.
///
/// In en, this message translates to:
/// **'Invalid URL format. Please check your input.'**
String get invalidUrlFormat;
/// Validation note restricting protocols to HTTP/HTTPS.
///
/// In en, this message translates to:
/// **'Only HTTP and HTTPS protocols are supported.'**
String get onlyHttpHttps;
/// Validation hint providing examples for server addresses.
///
/// In en, this message translates to:
/// **'Server address is required (e.g., 192.168.1.10 or example.com).'**
String get serverAddressRequired;
/// Validation message for allowed port range.
///
/// In en, this message translates to:
/// **'Port must be between 1 and 65535.'**
String get portRange;
/// Validation message for IP addresses with example.
///
/// In en, this message translates to:
/// **'Invalid IP address format. Use format like 192.168.1.10.'**
String get invalidIpFormat;
/// Generic failure when connecting to the server.
///
/// In en, this message translates to:
/// **'Couldn\'t connect. Double-check the address and try again.'**
String get couldNotConnectGeneric;
/// Connectivity error with hints to verify server status.
///
/// In en, this message translates to:
/// **'We couldn\'t reach the server. Check your connection and that the server is running.'**
String get weCouldntReachServer;
/// Timeout error while connecting to server.
///
/// In en, this message translates to:
/// **'Connection timed out. The server might be busy or blocked by a firewall.'**
String get connectionTimedOut;
/// Note instructing the user to include protocol in URL.
///
/// In en, this message translates to:
/// **'Use http:// or https:// only.'**
String get useHttpOrHttpsOnly;
/// Title for failed login attempts.
///
/// In en, this message translates to:
/// **'Login failed'**
String get loginFailed;
/// Detailed message when authentication fails.
///
/// In en, this message translates to:
/// **'Invalid username or password. Please try again.'**
String get invalidCredentials;
/// Warning about HTTP→HTTPS redirect issues.
///
/// In en, this message translates to:
/// **'The server is redirecting requests. Check your server\'s HTTPS configuration.'**
String get serverRedirectingHttps;
/// Generic server connection failure message.
///
/// In en, this message translates to:
/// **'Unable to connect to server. Please check your connection.'**
String get unableToConnectServer;
/// Timeout while waiting for a server response.
///
/// In en, this message translates to:
/// **'The request timed out. Please try again.'**
String get requestTimedOut;
/// Fallback sign-in error when no specific cause is known.
///
/// In en, this message translates to:
/// **'We couldn\'t sign you in. Check your credentials and server settings.'**
String get genericSignInFailed;
/// Onboarding: skip current step.
///
/// In en, this message translates to:
/// **'Skip'**
String get skip;
/// Onboarding: go to the next step.
///
/// In en, this message translates to:
/// **'Next'**
String get next;
/// Onboarding: finish the flow.
///
/// In en, this message translates to:
/// **'Done'**
String get done;
/// Onboarding card: start chatting title.
///
/// In en, this message translates to:
/// **'Hello, {username}'**
String onboardStartTitle(String username);
/// Onboarding card: brief guidance to begin a chat.
///
/// In en, this message translates to:
/// **'Choose a model to get started. Tap New Chat anytime.'**
String get onboardStartSubtitle;
/// Bullet: how to switch models.
///
/// In en, this message translates to:
/// **'Tap the model name in the top bar to switch models'**
String get onboardStartBullet1;
/// Bullet: how to reset context.
///
/// In en, this message translates to:
/// **'Use New Chat to reset context'**
String get onboardStartBullet2;
/// Onboarding card: attach context title.
///
/// In en, this message translates to:
/// **'Add context'**
String get onboardAttachTitle;
/// Onboarding card: why attaching context helps.
///
/// In en, this message translates to:
/// **'Ground replies with content from Workspace or photos.'**
String get onboardAttachSubtitle;
/// Bullet: types of workspace files.
///
/// In en, this message translates to:
/// **'Workspace: PDFs, docs, datasets'**
String get onboardAttachBullet1;
/// Bullet: photo sources supported.
///
/// In en, this message translates to:
/// **'Photos: camera or library'**
String get onboardAttachBullet2;
/// Onboarding card: voice input title.
///
/// In en, this message translates to:
/// **'Speak naturally'**
String get onboardSpeakTitle;
/// Onboarding card: how voice input works.
///
/// In en, this message translates to:
/// **'Tap the mic to dictate with live waveform feedback.'**
String get onboardSpeakSubtitle;
/// Bullet: stop dictation preserves text.
///
/// In en, this message translates to:
/// **'Stop anytime; partial text is preserved'**
String get onboardSpeakBullet1;
/// Bullet: benefits of voice input.
///
/// In en, this message translates to:
/// **'Great for quick notes or long prompts'**
String get onboardSpeakBullet2;
/// Onboarding card: quick actions title.
///
/// In en, this message translates to:
/// **'Quick actions'**
String get onboardQuickTitle;
/// Onboarding card: how to use the app menu.
///
/// In en, this message translates to:
/// **'Open the menu to switch between Chats, Workspace, and Profile.'**
String get onboardQuickSubtitle;
/// Bullet: menu access to sections.
///
/// In en, this message translates to:
/// **'Tap the menu to access Chats, Workspace, Profile'**
String get onboardQuickBullet1;
/// Bullet: actions available in the top bar.
///
/// In en, this message translates to:
/// **'Start New Chat or manage models from the top bar'**
String get onboardQuickBullet2;
/// Label shown beside attachment chips in messages.
///
/// In en, this message translates to:
/// **'Attachment'**
String get attachmentLabel;
/// Header for a tools/actions section.
///
/// In en, this message translates to:
/// **'Tools'**
String get tools;
/// Label for voice input feature.
///
/// In en, this message translates to:
/// **'Voice input'**
String get voiceInput;
/// Title for the voice input bottom sheet.
///
/// In en, this message translates to:
/// **'Voice'**
String get voice;
/// Indicates the app is actively listening during voice input.
///
/// In en, this message translates to:
/// **'Listening…'**
String get voiceStatusListening;
/// Indicates the app is recording audio for speech recognition.
///
/// In en, this message translates to:
/// **'Recording…'**
String get voiceStatusRecording;
/// Toggle label for hold-to-talk mode in voice input.
///
/// In en, this message translates to:
/// **'Hold to talk'**
String get voiceHoldToTalk;
/// Toggle label for automatically sending the final transcript.
///
/// In en, this message translates to:
/// **'Auto-send'**
String get voiceAutoSend;
/// Label above the transcribed voice input text.
///
/// In en, this message translates to:
/// **'Transcript'**
String get voiceTranscript;
/// Placeholder prompting the user to start speaking.
///
/// In en, this message translates to:
/// **'Speak now…'**
String get voicePromptSpeakNow;
/// Placeholder instructing the user to tap Start to begin recording.
///
/// In en, this message translates to:
/// **'Tap Start to begin'**
String get voicePromptTapStart;
/// Button label to stop voice recording.
///
/// In en, this message translates to:
/// **'Stop'**
String get voiceActionStop;
/// Button label to start voice recording.
///
/// In en, this message translates to:
/// **'Start'**
String get voiceActionStart;
/// Title displayed on the voice call screen.
///
/// In en, this message translates to:
/// **'Voice Call'**
String get voiceCallTitle;
/// Button label to pause a voice call.
///
/// In en, this message translates to:
/// **'Pause'**
String get voiceCallPause;
/// Button label to resume a paused voice call.
///
/// In en, this message translates to:
/// **'Resume'**
String get voiceCallResume;
/// Button label to stop the active voice call.
///
/// In en, this message translates to:
/// **'Stop'**
String get voiceCallStop;
/// Button label to end the voice call session.
///
/// In en, this message translates to:
/// **'End Call'**
String get voiceCallEnd;
/// Status label shown when the voice call is ready to start.
///
/// In en, this message translates to:
/// **'Ready'**
String get voiceCallReady;
/// Status label shown while the voice call is connecting.
///
/// In en, this message translates to:
/// **'Connecting...'**
String get voiceCallConnecting;
/// Status label shown while the call is listening for input.
///
/// In en, this message translates to:
/// **'Listening'**
String get voiceCallListening;
/// Status label shown when the call is paused.
///
/// In en, this message translates to:
/// **'Paused'**
String get voiceCallPaused;
/// Status label shown while the call processes a response.
///
/// In en, this message translates to:
/// **'Thinking...'**
String get voiceCallProcessing;
/// Status label shown while the assistant is speaking.
///
/// In en, this message translates to:
/// **'Speaking'**
String get voiceCallSpeaking;
/// Status label shown when the voice call has ended or disconnected.
///
/// In en, this message translates to:
/// **'Disconnected'**
String get voiceCallDisconnected;
/// Guidance shown when the voice call encounters an error.
///
/// In en, this message translates to:
/// **'Please check:\n• Microphone permissions are granted\n• Speech recognition is available on your device\n• You are connected to the server'**
String get voiceCallErrorHelp;
/// Accessibility label for the message input.
///
/// In en, this message translates to:
/// **'Message input'**
String get messageInputLabel;
/// Hint shown in the message input field.
///
/// In en, this message translates to:
/// **'Type your message'**
String get messageInputHint;
/// Short placeholder text in the message input.
///
/// In en, this message translates to:
/// **'Ask Conduit'**
String get messageHintText;
/// Action to stop the assistant's response generation.
///
/// In en, this message translates to:
/// **'Stop generating'**
String get stopGenerating;
/// Primary action to send a message.
///
/// In en, this message translates to:
/// **'Send'**
String get send;
/// Snack bar message confirming code was copied.
///
/// In en, this message translates to:
/// **'Code copied to clipboard.'**
String get codeCopiedToClipboard;
/// Semantic label for sending a message.
///
/// In en, this message translates to:
/// **'Send message'**
String get sendMessage;
/// A file item or attachment type label.
///
/// In en, this message translates to:
/// **'File'**
String get file;
/// Action label prompting the user to pick another file.
///
/// In en, this message translates to:
/// **'Choose Different File'**
String get chooseDifferentFile;
/// A photo item or attachment type label.
///
/// In en, this message translates to:
/// **'Photo'**
String get photo;
/// Camera source label.
///
/// In en, this message translates to:
/// **'Camera'**
String get camera;
/// Shown when backend API service is unavailable.
///
/// In en, this message translates to:
/// **'API service not available'**
String get apiUnavailable;
/// General failure to load an image.
///
/// In en, this message translates to:
/// **'Unable to load image'**
String get unableToLoadImage;
/// Error when a referenced file is not an image.
///
/// In en, this message translates to:
/// **'Not an image file: {fileName}'**
String notAnImageFile(String fileName);
/// Error including the underlying reason when image loading fails.
///
/// In en, this message translates to:
/// **'Failed to load image: {error}'**
String failedToLoadImage(String error);
/// Error for malformed data: URLs.
///
/// In en, this message translates to:
/// **'Invalid data URL format'**
String get invalidDataUrl;
/// Error when decoding image bytes/base64.
///
/// In en, this message translates to:
/// **'Failed to decode image'**
String get failedToDecodeImage;
/// Error when image type/format is not supported.
///
/// In en, this message translates to:
/// **'Invalid image format'**
String get invalidImageFormat;
/// Error when image data buffer is empty.
///
/// In en, this message translates to:
/// **'Empty image data'**
String get emptyImageData;
/// Confirmation button label.
///
/// In en, this message translates to:
/// **'Confirm'**
String get confirm;
/// Button label to continue an action or flow.
///
/// In en, this message translates to:
/// **'Continue'**
String get continueAction;
/// Cancel button label.
///
/// In en, this message translates to:
/// **'Cancel'**
String get cancel;
/// Generic OK button label.
///
/// In en, this message translates to:
/// **'OK'**
String get ok;
/// Label for navigating to the previous item.
///
/// In en, this message translates to:
/// **'Prev'**
String get previousLabel;
/// Label for navigating to the next item.
///
/// In en, this message translates to:
/// **'Next'**
String get nextLabel;
/// Accessibility label describing an input field.
///
/// In en, this message translates to:
/// **'Input field'**
String get inputField;
/// CTA to verify network connectivity.
///
/// In en, this message translates to:
/// **'Check Connection'**
String get checkConnection;
/// CTA to open device or app settings.
///
/// In en, this message translates to:
/// **'Open Settings'**
String get openSettings;
/// CTA to navigate back.
///
/// In en, this message translates to:
/// **'Go Back'**
String get goBack;
/// Expandable section label to show error details or logs.
///
/// In en, this message translates to:
/// **'Technical Details'**
String get technicalDetails;
/// Label text indicating a required field.
///
/// In en, this message translates to:
/// **'{label} *'**
String requiredFieldLabel(String label);
/// Helper text indicating that the field is required.
///
/// In en, this message translates to:
/// **'Required field'**
String get requiredFieldHelper;
/// Semantic label when a switch is enabled.
///
/// In en, this message translates to:
/// **'On'**
String get switchOnLabel;
/// Semantic label when a switch is disabled.
///
/// In en, this message translates to:
/// **'Off'**
String get switchOffLabel;
/// Semantic label describing the dialog title.
///
/// In en, this message translates to:
/// **'Dialog: {title}'**
String dialogSemanticLabel(String title);
/// Primary action to save changes.
///
/// In en, this message translates to:
/// **'Save'**
String get save;
/// Button/label to choose a model.
///
/// In en, this message translates to:
/// **'Choose Model'**
String get chooseModel;
/// Developer/reviewer mode indicator.
///
/// In en, this message translates to:
/// **'REVIEWER MODE'**
String get reviewerMode;
/// Dialog title to pick application language.
///
/// In en, this message translates to:
/// **'Select Language'**
String get selectLanguage;
/// Action to create a new folder.
///
/// In en, this message translates to:
/// **'New Folder'**
String get newFolder;
/// Label for entering a folder's name.
///
/// In en, this message translates to:
/// **'Folder name'**
String get folderName;
/// Action to start a new chat.
///
/// In en, this message translates to:
/// **'New Chat'**
String get newChat;
/// Opens additional actions or content.
///
/// In en, this message translates to:
/// **'More'**
String get more;
/// Action to clear input or selection.
///
/// In en, this message translates to:
/// **'Clear'**
String get clear;
/// Search input hint scoped to conversations.
///
/// In en, this message translates to:
/// **'Search conversations...'**
String get searchConversations;
/// Primary action to create a resource.
///
/// In en, this message translates to:
/// **'Create'**
String get create;
/// Error notice when folder creation fails.
///
/// In en, this message translates to:
/// **'Failed to create folder'**
String get failedToCreateFolder;
/// Error notice when moving a chat fails.
///
/// In en, this message translates to:
/// **'Failed to move chat'**
String get failedToMoveChat;
/// Error notice when fetching chat list fails.
///
/// In en, this message translates to:
/// **'Failed to load chats'**
String get failedToLoadChats;
/// Error notice when updating pin star/flag fails.
///
/// In en, this message translates to:
/// **'Failed to update pin'**
String get failedToUpdatePin;
/// Error notice when deleting a chat fails.
///
/// In en, this message translates to:
/// **'Failed to delete chat'**
String get failedToDeleteChat;
/// Context action to manage an item.
///
/// In en, this message translates to:
/// **'Manage'**
String get manage;
/// Context action to rename an item.
///
/// In en, this message translates to:
/// **'Rename'**
String get rename;
/// Context action to delete an item.
///
/// In en, this message translates to:
/// **'Delete'**
String get delete;
/// Dialog title to rename a chat.
///
/// In en, this message translates to:
/// **'Rename Chat'**
String get renameChat;
/// Input hint/label for new chat name.
///
/// In en, this message translates to:
/// **'Enter chat name'**
String get enterChatName;
/// Error notice when renaming chat fails.
///
/// In en, this message translates to:
/// **'Failed to rename chat'**
String get failedToRenameChat;
/// Error notice when archiving/unarchiving fails.
///
/// In en, this message translates to:
/// **'Failed to update archive'**
String get failedToUpdateArchive;
/// Action to unarchive an item.
///
/// In en, this message translates to:
/// **'Unarchive'**
String get unarchive;
/// Action to archive an item.
///
/// In en, this message translates to:
/// **'Archive'**
String get archive;
/// Action to pin/star an item.
///
/// In en, this message translates to:
/// **'Pin'**
String get pin;
/// Action to remove pin from an item.
///
/// In en, this message translates to:
/// **'Unpin'**
String get unpin;
/// List filter for recently used items.
///
/// In en, this message translates to:
/// **'Recent'**
String get recent;
/// Option indicating the device/system default.
///
/// In en, this message translates to:
/// **'System'**
String get system;
/// Language name: English.
///
/// In en, this message translates to:
/// **'English'**
String get english;
/// Language name: German.
///
/// In en, this message translates to:
/// **'Deutsch'**
String get deutsch;
/// Language name: French.
///
/// In en, this message translates to:
/// **'Français'**
String get francais;
/// Language name: Italian.
///
/// In en, this message translates to:
/// **'Italiano'**
String get italiano;
/// Language name: Spanish.
///
/// In en, this message translates to:
/// **'Español'**
String get espanol;
/// Language name: Dutch.
///
/// In en, this message translates to:
/// **'Nederlands'**
String get nederlands;
/// Language name: Russian.
///
/// In en, this message translates to:
/// **'Русский'**
String get russian;
/// Language name: Chinese.
///
/// In en, this message translates to:
/// **'中文'**
String get chinese;
/// Dialog title asking to confirm deletion of messages.
///
/// In en, this message translates to:
/// **'Delete Messages'**
String get deleteMessagesTitle;
/// Confirmation prompt asking to delete a number of messages.
///
/// In en, this message translates to:
/// **'Delete {count} messages?'**
String deleteMessagesMessage(int count);
/// Displayed when navigation fails to find a route name.
///
/// In en, this message translates to:
/// **'Route not found: {routeName}'**
String routeNotFound(String routeName);
/// Dialog title asking to confirm deletion of a chat.
///
/// In en, this message translates to:
/// **'Delete Chat'**
String get deleteChatTitle;
/// Warning that deleting a chat cannot be undone.
///
/// In en, this message translates to:
/// **'This chat will be permanently deleted.'**
String get deleteChatMessage;
/// Dialog title asking to confirm deletion of a folder.
///
/// In en, this message translates to:
/// **'Delete Folder'**
String get deleteFolderTitle;
/// Warning that deleting a folder will remove it and its associations.
///
/// In en, this message translates to:
/// **'This folder and its assignment references will be removed.'**
String get deleteFolderMessage;
/// Error notice when deleting a folder fails.
///
/// In en, this message translates to:
/// **'Failed to delete folder'**
String get failedToDeleteFolder;
/// Settings tile title to view app information.
///
/// In en, this message translates to:
/// **'About'**
String get aboutApp;
/// Subtitle/description for the About section.
///
/// In en, this message translates to:
/// **'Conduit information and links'**
String get aboutAppSubtitle;
/// Tab/section label for web features.
///
/// In en, this message translates to:
/// **'Web'**
String get web;
/// Short label for image generation section/tab.
///
/// In en, this message translates to:
/// **'Image Gen'**
String get imageGen;
/// Filter/tab for pinned items.
///
/// In en, this message translates to:
/// **'Pinned'**
String get pinned;
/// Tab listing chat folders.
///
/// In en, this message translates to:
/// **'Folders'**
String get folders;
/// Filter/tab for archived chats.
///
/// In en, this message translates to:
/// **'Archived'**
String get archived;
/// Label for choosing the app's display language.
///
/// In en, this message translates to:
/// **'App Language'**
String get appLanguage;
/// Label for toggling dark theme.
///
/// In en, this message translates to:
/// **'Dark Mode'**
String get darkMode;
/// Feature toggle/section for web search.
///
/// In en, this message translates to:
/// **'Web Search'**
String get webSearch;
/// Explains that responses can include citations from the web.
///
/// In en, this message translates to:
/// **'Search the web and cite sources in replies.'**
String get webSearchDescription;
/// Feature toggle/section for image generation.
///
/// In en, this message translates to:
/// **'Image Generation'**
String get imageGeneration;
/// Explains creating images via model prompts.
///
/// In en, this message translates to:
/// **'Create images from your prompts.'**
String get imageGenerationDescription;
/// Action to copy text to clipboard.
///
/// In en, this message translates to:
/// **'Copy'**
String get copy;
/// Action to play the assistant message using text to speech
///
/// In en, this message translates to:
/// **'Listen'**
String get ttsListen;
/// Action to stop text to speech playback
///
/// In en, this message translates to:
/// **'Stop'**
String get ttsStop;
/// Action to edit an item/message.
///
/// In en, this message translates to:
/// **'Edit'**
String get edit;
/// Action to request a new assistant response.
///
/// In en, this message translates to:
/// **'Regenerate'**
String get regenerate;
/// Empty state when the user has no chats.
///
/// In en, this message translates to:
/// **'No conversations yet'**
String get noConversationsYet;
/// Hint text for username/email input.
///
/// In en, this message translates to:
/// **'Enter your username or email'**
String get usernameOrEmailHint;
/// Hint text for password input.
///
/// In en, this message translates to:
/// **'Enter your password'**
String get passwordHint;
/// Hint text for API key input.
///
/// In en, this message translates to:
/// **'Enter your API key'**
String get enterApiKey;
/// Status message shown while signing in.
///
/// In en, this message translates to:
/// **'Signing in...'**
String get signingIn;
/// Section that contains additional/optional configuration.
///
/// In en, this message translates to:
/// **'Advanced Settings'**
String get advancedSettings;
/// Section title for adding custom HTTP headers.
///
/// In en, this message translates to:
/// **'Custom Headers'**
String get customHeaders;
/// Helper text explaining use-cases for custom headers.
///
/// In en, this message translates to:
/// **'Add custom HTTP headers for authentication, API keys, or special server requirements.'**
String get customHeadersDescription;
/// Toggle label that allows trusting self-signed TLS certificates for the configured server.
///
/// In en, this message translates to:
/// **'Trust self-signed certificates'**
String get allowSelfSignedCertificates;
/// Helper text clarifying the risks of enabling the self-signed certificate toggle.
///
/// In en, this message translates to:
/// **'Accept this server\'s TLS certificate even if it is self-signed. Enable only for servers you trust.'**
String get allowSelfSignedCertificatesDescription;
/// Validation message for empty header name.
///
/// In en, this message translates to:
/// **'Header name cannot be empty'**
String get headerNameEmpty;
/// Validation message for header name length.
///
/// In en, this message translates to:
/// **'Header name too long (max 64 characters)'**
String get headerNameTooLong;
/// Validation message for invalid characters in header name.
///
/// In en, this message translates to:
/// **'Invalid header name. Use only letters, numbers, and these symbols: !#\$&-^_`|~'**
String get headerNameInvalidChars;
/// Error when attempting to override a reserved HTTP header {key}.
///
/// In en, this message translates to:
/// **'Cannot override reserved header \"{key}\"'**
String headerNameReserved(String key);
/// Validation message for empty header value.
///
/// In en, this message translates to:
/// **'Header value cannot be empty'**
String get headerValueEmpty;
/// Validation message for header value length.
///
/// In en, this message translates to:
/// **'Header value too long (max 1024 characters)'**
String get headerValueTooLong;
/// Validation message for invalid characters in header value.
///
/// In en, this message translates to:
/// **'Header value contains invalid characters. Use only printable ASCII.'**
String get headerValueInvalidChars;
/// Security warning for suspicious header values.
///
/// In en, this message translates to:
/// **'Header value appears to contain potentially unsafe content'**
String get headerValueUnsafe;
/// Error when a custom header with key {key} already exists.
///
/// In en, this message translates to:
/// **'Header \"{key}\" already exists. Remove it first to update.'**
String headerAlreadyExists(String key);
/// Explains the upper limit of custom headers.
///
/// In en, this message translates to:
/// **'Maximum of 10 custom headers allowed. Remove some to add more.'**
String get maxHeadersReachedDetail;
/// Shown when model list is empty or failed to load.
///
/// In en, this message translates to:
/// **'No models available'**
String get noModelsAvailable;
/// Indicates the app is following the system theme ("Dark"/"Light").
///
/// In en, this message translates to:
/// **'Following system: {theme}'**
String followingSystem(String theme);
/// Theme label for dark appearance.
///
/// In en, this message translates to:
/// **'Dark'**
String get themeDark;
/// Title for selecting the app color palette.
///
/// In en, this message translates to:
/// **'Accent palette'**
String get themePalette;
/// Palette name for the default Conduit theme.
///
/// In en, this message translates to:
/// **'Conduit'**
String get themePaletteConduitLabel;
/// Description of the Conduit palette.
///
/// In en, this message translates to:
/// **'Clean neutral theme designed for Conduit.'**
String get themePaletteConduitDescription;
/// Palette name inspired by the Claude web client.
///
/// In en, this message translates to:
/// **'Claude'**
String get themePaletteClaudeLabel;
/// Description of the Claude palette.
///
/// In en, this message translates to:
/// **'Warm, tactile palette lifted from the Claude web client.'**
String get themePaletteClaudeDescription;
/// Palette name inspired by the T3 Stack brand.
///
/// In en, this message translates to:
/// **'T3 Chat'**
String get themePaletteT3ChatLabel;
/// Description of the T3 Chat palette.
///
/// In en, this message translates to:
/// **'Playful gradients inspired by the T3 Stack brand.'**
String get themePaletteT3ChatDescription;
/// Palette name for Catppuccin colors.
///
/// In en, this message translates to:
/// **'Catppuccin'**
String get themePaletteCatppuccinLabel;
/// Description of the Catppuccin palette.
///
/// In en, this message translates to:
/// **'Soft pastel palette.'**
String get themePaletteCatppuccinDescription;
/// Palette name for Tangerine colors.
///
/// In en, this message translates to:
/// **'Tangerine'**
String get themePaletteTangerineLabel;
/// Description of the Tangerine palette.
///
/// In en, this message translates to:
/// **'Warm orange-and-slate palette.'**
String get themePaletteTangerineDescription;
/// Theme label for light appearance.
///
/// In en, this message translates to:
/// **'Light'**
String get themeLight;
/// Status text indicating dark theme is active.
///
/// In en, this message translates to:
/// **'Currently using Dark theme'**
String get currentlyUsingDarkTheme;
/// Status text indicating light theme is active.
///
/// In en, this message translates to:
/// **'Currently using Light theme'**
String get currentlyUsingLightTheme;
/// Dialog title for app information.
///
/// In en, this message translates to:
/// **'About Conduit'**
String get aboutConduit;
/// Displays version and build number in the About dialog.
///
/// In en, this message translates to:
/// **'Version: {version} ({build})'**
String versionLabel(String version, String build);
/// Link label pointing to the app repository.
///
/// In en, this message translates to:
/// **'GitHub Repository'**
String get githubRepository;
/// Error text when package info cannot be retrieved.
///
/// In en, this message translates to:
/// **'Unable to load app info'**
String get unableToLoadAppInfo;
/// Label shown while the assistant is reasoning.
///
/// In en, this message translates to:
/// **'Thinking…'**
String get thinking;
/// Section title for showing reasoning content.
///
/// In en, this message translates to:
/// **'Thoughts'**
String get thoughts;
/// Shows how long the assistant thought before replying.
///
/// In en, this message translates to:
/// **'Thought for {duration}'**
String thoughtForDuration(String duration);
/// Title of the customization settings page.
///
/// In en, this message translates to:
/// **'Customization'**
String get appCustomization;
/// Subtitle shown under App Customization tile and page header.
///
/// In en, this message translates to:
/// **'Theme, language, voice, and quickpills'**
String get appCustomizationSubtitle;
/// Helper text explaining quick action pill selection in customization.
///
/// In en, this message translates to:
/// **'Quickpills in chat'**
String get quickActionsDescription;
/// Subtitle indicating how many quick actions are selected.
///
/// In en, this message translates to:
/// **'{count, plural, =0{No actions selected} one{1 action selected} other{{count} actions selected}}'**
String quickActionsSelectedCount(int count);
/// Explains what the auto-select model setting does.
///
/// In en, this message translates to:
/// **'Let the app choose the best model'**
String get autoSelectDescription;
/// Section header for chat-related customization options.
///
/// In en, this message translates to:
/// **'Chat'**
String get chatSettings;
/// Toggle title for sending messages when pressing Enter.
///
/// In en, this message translates to:
/// **'Send on Enter'**
String get sendOnEnter;
/// Explanation of how the Send on Enter toggle behaves.
///
/// In en, this message translates to:
/// **'Enter sends (soft keyboard). Cmd/Ctrl+Enter also available'**
String get sendOnEnterDescription;
/// Label for selecting the text-to-speech engine.
///
/// In en, this message translates to:
/// **'Engine'**
String get ttsEngineLabel;
/// Chip label for using on-device text-to-speech.
///
/// In en, this message translates to:
/// **'On device'**
String get ttsEngineDevice;
/// Chip label for using server-side text-to-speech.
///
/// In en, this message translates to:
/// **'Server'**
String get ttsEngineServer;
/// Section header for TTS-related customization options.
///
/// In en, this message translates to:
/// **'Text to Speech'**
String get ttsSettings;
/// Title for voice selection tile.
///
/// In en, this message translates to:
/// **'Voice'**
String get ttsVoice;
/// Title for speech rate slider.
///
/// In en, this message translates to:
/// **'Speech Rate'**
String get ttsSpeechRate;
/// Title for pitch slider.
///
/// In en, this message translates to:
/// **'Pitch'**
String get ttsPitch;
/// Title for volume slider.
///
/// In en, this message translates to:
/// **'Volume'**
String get ttsVolume;
/// Title for preview button.
///
/// In en, this message translates to:
/// **'Preview Voice'**
String get ttsPreview;
/// Label for system default voice option.
///
/// In en, this message translates to:
/// **'System Default'**
String get ttsSystemDefault;
/// Title for voice picker bottom sheet.
///
/// In en, this message translates to:
/// **'Select Voice'**
String get ttsSelectVoice;
/// Sample text spoken during voice preview.
///
/// In en, this message translates to:
/// **'This is a preview of the selected voice.'**
String get ttsPreviewText;
/// Error message when no TTS voices can be found.
///
/// In en, this message translates to:
/// **'No voices available'**
String get ttsNoVoicesAvailable;
/// Section header for voices matching the app language
///
/// In en, this message translates to:
/// **'{language} Voices'**
String ttsVoicesForLanguage(String language);
/// Section header for voices in other languages.
///
/// In en, this message translates to:
/// **'Other Languages'**
String get ttsOtherVoices;
/// Generic error label.
///
/// In en, this message translates to:
/// **'Error'**
String get error;
/// Error label with appended message text.
///
/// In en, this message translates to:
/// **'Error: {message}'**
String errorWithMessage(String message);
/// User-facing message when a network request times out.
///
/// In en, this message translates to:
/// **'Connection timed out. Please check your internet connection and try again.'**
String get networkTimeoutError;
/// User-facing message when the server cannot be reached.
///
/// In en, this message translates to:
/// **'Cannot reach the server. Please check your server URL and internet connection.'**
String get networkUnreachableError;
/// User-facing message when the server does not respond to a request.
///
/// In en, this message translates to:
/// **'Server is not responding. Please verify the server is running and accessible.'**
String get networkServerNotResponding;
/// Fallback message for generic network errors.
///
/// In en, this message translates to:
/// **'Network connection problem. Please check your internet connection.'**
String get networkGenericError;
/// Message when a 500 error is encountered.
///
/// In en, this message translates to:
/// **'Server is experiencing issues. This is usually temporary.'**
String get serverError500;
/// Message when a 502/503 error is encountered.
///
/// In en, this message translates to:
/// **'Server is temporarily unavailable. Please try again in a moment.'**
String get serverErrorUnavailable;
/// Message when the server times out.
///
/// In en, this message translates to:
/// **'Server took too long to respond. Please try again.'**
String get serverErrorTimeout;
/// Fallback server error message.
///
/// In en, this message translates to:
/// **'Server is having problems. Please try again later.'**
String get serverErrorGeneric;
/// Message when an authentication session expires.
///
/// In en, this message translates to:
/// **'Your session has expired. Please sign in again.'**
String get authSessionExpired;
/// Message when the user lacks required permissions.
///
/// In en, this message translates to:
/// **'You don\'t have permission to perform this action.'**
String get authForbidden;
/// Message when the authentication token is invalid.
///
/// In en, this message translates to:
/// **'Authentication token is invalid. Please sign in again.'**
String get authInvalidToken;
/// Fallback authentication error message.
///
/// In en, this message translates to:
/// **'Authentication problem. Please sign in again.'**
String get authGenericError;
/// Validation message for invalid email input.
///
/// In en, this message translates to:
/// **'Please enter a valid email address.'**
String get validationInvalidEmail;
/// Validation message for weak passwords.
///
/// In en, this message translates to:
/// **'Password doesn\'t meet requirements. Please check and try again.'**
String get validationWeakPassword;
/// Validation message when required fields are missing.
///
/// In en, this message translates to:
/// **'Please fill in all required fields.'**
String get validationMissingRequired;
/// Validation message for generic formatting issues.
///
/// In en, this message translates to:
/// **'Some information is in the wrong format. Please check and try again.'**
String get validationFormatError;
/// Fallback validation message.
///
/// In en, this message translates to:
/// **'Please check your input and try again.'**
String get validationGenericError;
/// Message when a file cannot be located.
///
/// In en, this message translates to:
/// **'File not found. It may have been moved or deleted.'**
String get fileNotFound;
/// Message when file access is denied.
///
/// In en, this message translates to:
/// **'Cannot access the file. Please check permissions.'**
String get fileAccessDenied;
/// Message when a file exceeds size limits.
///
/// In en, this message translates to:
/// **'File is too large. Please choose a smaller file.'**
String get fileTooLarge;
/// Fallback file error message.
///
/// In en, this message translates to:
/// **'Problem with the file. Please try a different file.'**
String get fileGenericError;
/// Message when camera permission is missing.
///
/// In en, this message translates to:
/// **'Camera permission is required. Please enable it in settings.'**
String get permissionCameraRequired;
/// Message when storage permission is missing.
///
/// In en, this message translates to:
/// **'Storage permission is required. Please enable it in settings.'**
String get permissionStorageRequired;
/// Message when microphone permission is missing.
///
/// In en, this message translates to:
/// **'Microphone permission is required. Please enable it in settings.'**
String get permissionMicrophoneRequired;
/// Fallback permission error message.
///
/// In en, this message translates to:
/// **'Permission required. Please check app permissions in settings.'**
String get permissionGenericError;
/// Description for retrying a failed request.
///
/// In en, this message translates to:
/// **'Try the request again.'**
String get actionRetryRequest;
/// Description for checking internet connectivity.
///
/// In en, this message translates to:
/// **'Verify your internet connection.'**
String get actionVerifyConnection;
/// Description for retrying the same operation.
///
/// In en, this message translates to:
/// **'Retry the operation.'**
String get actionRetryOperation;
/// Description suggesting a short delay before retrying.
///
/// In en, this message translates to:
/// **'Wait a moment then try again.'**
String get actionRetryAfterDelay;
/// Description for signing back into the app.
///
/// In en, this message translates to:
/// **'Sign in to your account.'**
String get actionSignInToAccount;
/// Description for choosing a different file.
///
/// In en, this message translates to:
/// **'Select another file.'**
String get actionSelectAnotherFile;
/// Description for opening system or app settings.
///
/// In en, this message translates to:
/// **'Open app settings to grant permissions.'**
String get actionOpenAppSettings;
/// Description for retrying once permissions are granted.
///
/// In en, this message translates to:
/// **'Retry after granting permission.'**
String get actionRetryAfterPermission;
/// Description for navigating back to the prior screen.
///
/// In en, this message translates to:
/// **'Return to previous screen.'**
String get actionReturnToPrevious;
/// Section header for visual and layout related settings.
///
/// In en, this message translates to:
/// **'Display'**
String get display;
/// Section header for realtime/transport settings.
///
/// In en, this message translates to:
/// **'Realtime'**
String get realtime;
/// Title for selecting the networking transport used for realtime.
///
/// In en, this message translates to:
/// **'Transport mode'**
String get transportMode;
/// Form field label for transport mode dropdown.
///
/// In en, this message translates to:
/// **'Mode'**
String get mode;
/// Dropdown option label for HTTP polling fallback transport.
///
/// In en, this message translates to:
/// **'Polling fallback'**
String get transportModePolling;
/// Dropdown option label for WebSocket-only transport.
///
/// In en, this message translates to:
/// **'WebSocket only'**
String get transportModeWs;
/// Footnote text for the polling fallback transport mode.
///
/// In en, this message translates to:
/// **'Falls back to HTTP polling when WebSocket is blocked. Upgrades to WebSocket when possible.'**
String get transportModePollingInfo;
/// Footnote text for the WebSocket-only transport mode.
///
/// In en, this message translates to:
/// **'Lower overhead, but may fail behind strict proxies/firewalls.'**
String get transportModeWsInfo;
}
class _AppLocalizationsDelegate
extends LocalizationsDelegate<AppLocalizations> {
const _AppLocalizationsDelegate();
@override
Future<AppLocalizations> load(Locale locale) {
return SynchronousFuture<AppLocalizations>(lookupAppLocalizations(locale));
}
@override
bool isSupported(Locale locale) => <String>[
'de',
'en',
'es',
'fr',
'it',
'nl',
'ru',
'zh',
].contains(locale.languageCode);
@override
bool shouldReload(_AppLocalizationsDelegate old) => false;
}
AppLocalizations lookupAppLocalizations(Locale locale) {
// Lookup logic when only language code is specified.
switch (locale.languageCode) {
case 'de':
return AppLocalizationsDe();
case 'en':
return AppLocalizationsEn();
case 'es':
return AppLocalizationsEs();
case 'fr':
return AppLocalizationsFr();
case 'it':
return AppLocalizationsIt();
case 'nl':
return AppLocalizationsNl();
case 'ru':
return AppLocalizationsRu();
case 'zh':
return AppLocalizationsZh();
}
throw FlutterError(
'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely '
'an issue with the localizations generation tool. Please file an issue '
'on GitHub with a reproducible sample app and the gen-l10n configuration '
'that was used.',
);
}