diff --git a/l10n.yaml b/l10n.yaml index f05e853..65258ba 100644 --- a/l10n.yaml +++ b/l10n.yaml @@ -9,6 +9,7 @@ preferred-supported-locales: - fr - it - zh + - zh_Hant - ru - nl - es diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart index 0c6996c..e69de29 100644 --- a/lib/l10n/app_localizations.dart +++ b/lib/l10n/app_localizations.dart @@ -1,2313 +0,0 @@ -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_ko.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, you’ll need to edit this -/// file. -/// -/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file. -/// Then, in the Project Navigator, open the Info.plist file under the Runner -/// project’s 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(context, AppLocalizations); - } - - static const LocalizationsDelegate 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> localizationsDelegates = - >[ - delegate, - GlobalMaterialLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - ]; - - /// A list of this localizations delegate's supported locales. - static const List supportedLocales = [ - Locale('en'), - Locale('de'), - Locale('fr'), - Locale('it'), - Locale('zh'), - Locale('ru'), - Locale('nl'), - Locale('es'), - Locale('ko'), - ]; - - /// 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; - - /// Language name: Korean. - /// - /// In en, this message translates to: - /// **'한국어'** - String get korean; - - /// 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; - - /// Section header for speech-to-text settings. - /// - /// In en, this message translates to: - /// **'Speech to Text'** - String get sttSettings; - - /// Label shown above the speech-to-text engine chips. - /// - /// In en, this message translates to: - /// **'Recognition engine'** - String get sttEngineLabel; - - /// Chip label for automatic speech-to-text selection. - /// - /// In en, this message translates to: - /// **'Auto'** - String get sttEngineAuto; - - /// Chip label for on-device speech recognition. - /// - /// In en, this message translates to: - /// **'On device'** - String get sttEngineDevice; - - /// Chip label for server speech recognition. - /// - /// In en, this message translates to: - /// **'Server'** - String get sttEngineServer; - - /// Description shown when automatic speech-to-text preference is active. - /// - /// In en, this message translates to: - /// **'Use on-device recognition when available and fall back to your server.'** - String get sttEngineAutoDescription; - - /// Description shown when on-device speech-to-text preference is active. - /// - /// In en, this message translates to: - /// **'Keep audio on this device. Voice input stops working if on-device speech recognition isn’t supported.'** - String get sttEngineDeviceDescription; - - /// Description shown when server speech-to-text preference is active. - /// - /// In en, this message translates to: - /// **'Always send recordings to your OpenWebUI server for transcription.'** - String get sttEngineServerDescription; - - /// Warning shown when the user selects on-device speech recognition but it is unavailable. - /// - /// In en, this message translates to: - /// **'On-device speech recognition isn’t available on this device.'** - String get sttDeviceUnavailableWarning; - - /// Warning shown when the user selects server speech recognition but no server is available. - /// - /// In en, this message translates to: - /// **'Connect to a server with transcription enabled to use this option.'** - String get sttServerUnavailableWarning; - - /// Label for the silence duration setting in server speech-to-text. - /// - /// In en, this message translates to: - /// **'Silence Duration'** - String get sttSilenceDuration; - - /// Description for the silence duration slider in server speech-to-text settings. - /// - /// In en, this message translates to: - /// **'Time to wait after silence before auto-stopping recording'** - String get sttSilenceDurationDescription; - - /// Label for selecting the text-to-speech engine. - /// - /// In en, this message translates to: - /// **'Engine'** - String get ttsEngineLabel; - - /// Chip label for automatically selecting the text-to-speech engine. - /// - /// In en, this message translates to: - /// **'Auto'** - String get ttsEngineAuto; - - /// 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; - - /// Description shown when automatic text-to-speech preference is active. - /// - /// In en, this message translates to: - /// **'Use on-device speech when available and fall back to your server.'** - String get ttsEngineAutoDescription; - - /// Description shown when on-device text-to-speech preference is active. - /// - /// In en, this message translates to: - /// **'Keep synthesis on this device. Voice playback stops working if on-device TTS isn’t supported.'** - String get ttsEngineDeviceDescription; - - /// Description shown when server text-to-speech preference is active. - /// - /// In en, this message translates to: - /// **'Always request audio from your OpenWebUI server.'** - String get ttsEngineServerDescription; - - /// Warning shown when on-device text-to-speech is unavailable. - /// - /// In en, this message translates to: - /// **'On-device text-to-speech isn’t available on this device.'** - String get ttsDeviceUnavailableWarning; - - /// Warning shown when server text-to-speech is unavailable. - /// - /// In en, this message translates to: - /// **'Connect to a server with text-to-speech enabled to use this option.'** - String get ttsServerUnavailableWarning; - - /// 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 { - const _AppLocalizationsDelegate(); - - @override - Future load(Locale locale) { - return SynchronousFuture(lookupAppLocalizations(locale)); - } - - @override - bool isSupported(Locale locale) => [ - 'de', - 'en', - 'es', - 'fr', - 'it', - 'ko', - '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 'ko': - return AppLocalizationsKo(); - 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.', - ); -} diff --git a/lib/l10n/app_localizations_de.dart b/lib/l10n/app_localizations_de.dart index bc12013..e69de29 100644 --- a/lib/l10n/app_localizations_de.dart +++ b/lib/l10n/app_localizations_de.dart @@ -1,1211 +0,0 @@ -// ignore: unused_import -import 'package:intl/intl.dart' as intl; -import 'app_localizations.dart'; - -// ignore_for_file: type=lint - -/// The translations for German (`de`). -class AppLocalizationsDe extends AppLocalizations { - AppLocalizationsDe([String locale = 'de']) : super(locale); - - @override - String get appTitle => 'Conduit'; - - @override - String get retry => 'Erneut versuchen'; - - @override - String get back => 'Zurück'; - - @override - String get you => 'Du'; - - @override - String get loadingProfile => 'Profil wird geladen...'; - - @override - String get unableToLoadProfile => 'Profil konnte nicht geladen werden'; - - @override - String get pleaseCheckConnection => - 'Bitte überprüfe deine Verbindung und versuche es erneut'; - - @override - String get connectionIssueTitle => 'Server nicht erreichbar'; - - @override - String get connectionIssueSubtitle => - 'Verbindung wiederherstellen oder abmelden, um einen anderen Server zu wählen.'; - - @override - String get account => 'Konto'; - - @override - String get supportConduit => 'Conduit unterstützen'; - - @override - String get supportConduitSubtitle => - 'Hilf, die Weiterentwicklung und neue Funktionen zu finanzieren.'; - - @override - String get githubSponsorsTitle => 'GitHub Sponsors'; - - @override - String get githubSponsorsSubtitle => - 'Werde monatliche*r Sponsor*in und unterstütze die Roadmap.'; - - @override - String get buyMeACoffeeTitle => 'Buy Me a Coffee'; - - @override - String get buyMeACoffeeSubtitle => - 'Bedanke dich mit einer einmaligen Spende.'; - - @override - String get signOut => 'Abmelden'; - - @override - String get endYourSession => 'Sitzung beenden'; - - @override - String get defaultModel => 'Standardmodell'; - - @override - String get autoSelect => 'Automatische Auswahl'; - - @override - String get loadingModels => 'Modelle werden geladen...'; - - @override - String get failedToLoadModels => 'Modelle konnten nicht geladen werden'; - - @override - String get availableModels => 'Verfügbare Modelle'; - - @override - String get modelCapabilityMultimodal => 'Multimodal'; - - @override - String get modelCapabilityReasoning => 'Reasoning'; - - @override - String get noResults => 'Keine Ergebnisse'; - - @override - String get searchModels => 'Modelle suchen...'; - - @override - String get errorMessage => - 'Etwas ist schief gelaufen. Bitte versuche es erneut.'; - - @override - String get closeButtonSemantic => 'Schließen'; - - @override - String get loadingContent => 'Inhalt wird geladen'; - - @override - String get loadingShort => 'Laden'; - - @override - String loadingAnnouncement(String message) { - return 'Laden: $message'; - } - - @override - String errorAnnouncement(String error) { - return 'Fehler: $error'; - } - - @override - String errorAnnouncementWithSuggestion(String error, String suggestion) { - return 'Fehler: $error. $suggestion'; - } - - @override - String successAnnouncement(String message) { - return 'Erfolg: $message'; - } - - @override - String get noItems => 'Keine Elemente'; - - @override - String get noItemsToDisplay => 'Keine Elemente zum Anzeigen'; - - @override - String get knowledgeBase => 'Wissensdatenbank'; - - @override - String get attachments => 'Anhänge'; - - @override - String get takePhoto => 'Foto aufnehmen'; - - @override - String get document => 'Dokument'; - - @override - String get backToServerSetup => 'Zur Servereinrichtung zurück'; - - @override - String get connectedToServer => 'Mit Server verbunden'; - - @override - String get signIn => 'Anmelden'; - - @override - String get enterCredentials => - 'Gib deine Anmeldedaten ein, um auf deine KI-Unterhaltungen zuzugreifen'; - - @override - String get credentials => 'Zugangsdaten'; - - @override - String get apiKey => 'API-Schlüssel'; - - @override - String get usernameOrEmail => 'Benutzername oder E‑Mail'; - - @override - String get password => 'Passwort'; - - @override - String get signInWithApiKey => 'Mit API-Schlüssel anmelden'; - - @override - String get connectToServer => 'Mit Server verbinden'; - - @override - String get enterServerAddress => - 'Gib die Adresse deines Open-WebUI-Servers ein, um zu beginnen'; - - @override - String get serverUrl => 'Server-URL'; - - @override - String get serverUrlHint => 'https://dein-server.com'; - - @override - String get enterServerUrlSemantic => - 'Gib deine Server-URL oder IP-Adresse ein'; - - @override - String get headerName => 'Header-Name'; - - @override - String get headerValue => 'Header-Wert'; - - @override - String get headerValueHint => 'api-key-123 oder Bearer-Token'; - - @override - String get addHeader => 'Header hinzufügen'; - - @override - String get maximumHeadersReached => 'Maximale Anzahl erreicht'; - - @override - String get removeHeader => 'Header entfernen'; - - @override - String get connecting => 'Verbindung wird hergestellt...'; - - @override - String get connectToServerButton => 'Mit Server verbinden'; - - @override - String get demoModeActive => 'Demo-Modus aktiv'; - - @override - String get skipServerSetupTryDemo => - 'Servereinrichtung überspringen und Demo testen'; - - @override - String get enterDemo => 'Demo starten'; - - @override - String get demoBadge => 'Demo'; - - @override - String get serverNotOpenWebUI => - 'Dies scheint kein Open-WebUI-Server zu sein.'; - - @override - String get serverUrlEmpty => 'Server-URL darf nicht leer sein'; - - @override - String get invalidUrlFormat => 'Ungültiges URL-Format. Bitte Eingabe prüfen.'; - - @override - String get onlyHttpHttps => - 'Nur HTTP- und HTTPS-Protokolle werden unterstützt.'; - - @override - String get serverAddressRequired => - 'Serveradresse erforderlich (z. B. 192.168.1.10 oder example.com).'; - - @override - String get portRange => 'Port muss zwischen 1 und 65535 liegen.'; - - @override - String get invalidIpFormat => 'Ungültiges IP-Format. Beispiel: 192.168.1.10.'; - - @override - String get couldNotConnectGeneric => - 'Verbindung fehlgeschlagen. Adresse prüfen und erneut versuchen.'; - - @override - String get weCouldntReachServer => - 'Server nicht erreichbar. Verbindung und Serverstatus prüfen.'; - - @override - String get connectionTimedOut => - 'Zeitüberschreitung. Server eventuell ausgelastet oder blockiert.'; - - @override - String get useHttpOrHttpsOnly => 'Nur http:// oder https:// verwenden.'; - - @override - String get loginFailed => 'Anmeldung fehlgeschlagen'; - - @override - String get invalidCredentials => - 'Ungültiger Benutzername oder Passwort. Bitte erneut versuchen.'; - - @override - String get serverRedirectingHttps => - 'Server leitet um. HTTPS-Konfiguration prüfen.'; - - @override - String get unableToConnectServer => - 'Verbindung zum Server nicht möglich. Bitte Verbindung prüfen.'; - - @override - String get requestTimedOut => 'Zeitüberschreitung. Bitte erneut versuchen.'; - - @override - String get genericSignInFailed => - 'Anmeldung nicht möglich. Zugangsdaten und Server prüfen.'; - - @override - String get skip => 'Überspringen'; - - @override - String get next => 'Weiter'; - - @override - String get done => 'Fertig'; - - @override - String onboardStartTitle(String username) { - return 'Hallo, $username'; - } - - @override - String get onboardStartSubtitle => - 'Wähle ein Modell, um loszulegen. Tippe jederzeit auf Neuer Chat.'; - - @override - String get onboardStartBullet1 => 'Modellname oben antippen, um zu wechseln'; - - @override - String get onboardStartBullet2 => 'Mit Neuer Chat den Kontext zurücksetzen'; - - @override - String get onboardAttachTitle => 'Kontext hinzufügen'; - - @override - String get onboardAttachSubtitle => - 'Antworten mit Inhalten aus Arbeitsbereich oder Fotos untermauern.'; - - @override - String get onboardAttachBullet1 => - 'Arbeitsbereich: PDFs, Dokumente, Datensätze'; - - @override - String get onboardAttachBullet2 => 'Fotos: Kamera oder Bibliothek'; - - @override - String get onboardSpeakTitle => 'Natürlich sprechen'; - - @override - String get onboardSpeakSubtitle => 'Auf das Mikro tippen, um zu diktieren.'; - - @override - String get onboardSpeakBullet1 => 'Jederzeit stoppen; Text bleibt erhalten'; - - @override - String get onboardSpeakBullet2 => - 'Ideal für kurze Notizen oder lange Prompts'; - - @override - String get onboardQuickTitle => 'Schnellaktionen'; - - @override - String get onboardQuickSubtitle => - 'Menü öffnen, um zwischen Chats, Arbeitsbereich und Profil zu wechseln.'; - - @override - String get onboardQuickBullet1 => - 'Menü tippen für Chats, Arbeitsbereich, Profil'; - - @override - String get onboardQuickBullet2 => - 'Neuer Chat starten oder Modelle oben verwalten'; - - @override - String get attachmentLabel => 'Anhang'; - - @override - String get tools => 'Werkzeuge'; - - @override - String get voiceInput => 'Spracheingabe'; - - @override - String get voice => 'Sprache'; - - @override - String get voiceStatusListening => 'Hört zu…'; - - @override - String get voiceStatusRecording => 'Nimmt auf…'; - - @override - String get voiceHoldToTalk => 'Zum Sprechen halten'; - - @override - String get voiceAutoSend => 'Automatisch senden'; - - @override - String get voiceTranscript => 'Transkript'; - - @override - String get voicePromptSpeakNow => 'Jetzt sprechen…'; - - @override - String get voicePromptTapStart => 'Tippe auf \"Starten\", um zu beginnen'; - - @override - String get voiceActionStop => 'Stopp'; - - @override - String get voiceActionStart => 'Starten'; - - @override - String get voiceCallTitle => 'Sprachanruf'; - - @override - String get voiceCallPause => 'Pause'; - - @override - String get voiceCallResume => 'Fortsetzen'; - - @override - String get voiceCallStop => 'Stopp'; - - @override - String get voiceCallEnd => 'Anruf beenden'; - - @override - String get voiceCallReady => 'Bereit'; - - @override - String get voiceCallConnecting => 'Verbinden...'; - - @override - String get voiceCallListening => 'Zuhören'; - - @override - String get voiceCallPaused => 'Pausiert'; - - @override - String get voiceCallProcessing => 'Denkt...'; - - @override - String get voiceCallSpeaking => 'Spricht'; - - @override - String get voiceCallDisconnected => 'Getrennt'; - - @override - String get voiceCallErrorHelp => - 'Bitte prüfe:\n• Mikrofonberechtigungen sind erteilt\n• Spracherkennung ist auf deinem Gerät verfügbar\n• Du bist mit dem Server verbunden'; - - @override - String get messageInputLabel => 'Nachrichteneingabe'; - - @override - String get messageInputHint => 'Nachricht eingeben'; - - @override - String get messageHintText => 'Frag Conduit'; - - @override - String get stopGenerating => 'Generierung stoppen'; - - @override - String get send => 'Senden'; - - @override - String get codeCopiedToClipboard => 'Code in die Zwischenablage kopiert.'; - - @override - String get sendMessage => 'Nachricht senden'; - - @override - String get file => 'Datei'; - - @override - String get chooseDifferentFile => 'Andere Datei auswählen'; - - @override - String get photo => 'Foto'; - - @override - String get camera => 'Kamera'; - - @override - String get apiUnavailable => 'API-Dienst nicht verfügbar'; - - @override - String get unableToLoadImage => 'Bild kann nicht geladen werden'; - - @override - String notAnImageFile(String fileName) { - return 'Keine Bilddatei: $fileName'; - } - - @override - String failedToLoadImage(String error) { - return 'Bild konnte nicht geladen werden: $error'; - } - - @override - String get invalidDataUrl => 'Ungültiges Data-URL-Format'; - - @override - String get failedToDecodeImage => 'Bild konnte nicht decodiert werden'; - - @override - String get invalidImageFormat => 'Ungültiges Bildformat'; - - @override - String get emptyImageData => 'Leere Bilddaten'; - - @override - String get confirm => 'Bestätigen'; - - @override - String get continueAction => 'Weiter'; - - @override - String get cancel => 'Abbrechen'; - - @override - String get ok => 'OK'; - - @override - String get previousLabel => 'Zurück'; - - @override - String get nextLabel => 'Weiter'; - - @override - String get inputField => 'Eingabefeld'; - - @override - String get checkConnection => 'Verbindung prüfen'; - - @override - String get openSettings => 'Einstellungen öffnen'; - - @override - String get goBack => 'Zurück'; - - @override - String get technicalDetails => 'Technische Details'; - - @override - String requiredFieldLabel(String label) { - return '$label *'; - } - - @override - String get requiredFieldHelper => 'Pflichtfeld'; - - @override - String get switchOnLabel => 'Ein'; - - @override - String get switchOffLabel => 'Aus'; - - @override - String dialogSemanticLabel(String title) { - return 'Dialog: $title'; - } - - @override - String get save => 'Speichern'; - - @override - String get chooseModel => 'Modell wählen'; - - @override - String get reviewerMode => 'REVIEWER MODE'; - - @override - String get selectLanguage => 'Sprache auswählen'; - - @override - String get newFolder => 'Neuer Ordner'; - - @override - String get folderName => 'Ordnername'; - - @override - String get newChat => 'Neuer Chat'; - - @override - String get more => 'Mehr'; - - @override - String get clear => 'Leeren'; - - @override - String get searchConversations => 'Konversationen durchsuchen...'; - - @override - String get create => 'Erstellen'; - - @override - String get failedToCreateFolder => 'Ordner konnte nicht erstellt werden'; - - @override - String get failedToMoveChat => 'Chat konnte nicht verschoben werden'; - - @override - String get failedToLoadChats => 'Chats konnten nicht geladen werden'; - - @override - String get failedToUpdatePin => 'Pin konnte nicht aktualisiert werden'; - - @override - String get failedToDeleteChat => 'Chat konnte nicht gelöscht werden'; - - @override - String get manage => 'Verwalten'; - - @override - String get rename => 'Umbenennen'; - - @override - String get delete => 'Löschen'; - - @override - String get renameChat => 'Chat umbenennen'; - - @override - String get enterChatName => 'Chat-Namen eingeben'; - - @override - String get failedToRenameChat => 'Chat konnte nicht umbenannt werden'; - - @override - String get failedToUpdateArchive => 'Archiv konnte nicht aktualisiert werden'; - - @override - String get unarchive => 'Archivierung aufheben'; - - @override - String get archive => 'Archivieren'; - - @override - String get pin => 'Anheften'; - - @override - String get unpin => 'Lösen'; - - @override - String get recent => 'Zuletzt'; - - @override - String get system => 'System'; - - @override - String get english => 'Englisch'; - - @override - String get deutsch => 'Deutsch'; - - @override - String get francais => 'Französisch'; - - @override - String get italiano => 'Italienisch'; - - @override - String get espanol => 'Spanisch'; - - @override - String get nederlands => 'Niederländisch'; - - @override - String get russian => 'Russisch'; - - @override - String get chinese => 'Chinesisch'; - - @override - String get korean => 'Koreanisch'; - - @override - String get deleteMessagesTitle => 'Nachrichten löschen'; - - @override - String deleteMessagesMessage(int count) { - return '$count Nachrichten löschen?'; - } - - @override - String routeNotFound(String routeName) { - return 'Route nicht gefunden: $routeName'; - } - - @override - String get deleteChatTitle => 'Chat löschen'; - - @override - String get deleteChatMessage => 'Dieser Chat wird dauerhaft gelöscht.'; - - @override - String get deleteFolderTitle => 'Ordner löschen'; - - @override - String get deleteFolderMessage => - 'Dieser Ordner und seine Zuordnungen werden entfernt.'; - - @override - String get failedToDeleteFolder => 'Ordner konnte nicht gelöscht werden'; - - @override - String get aboutApp => 'Über'; - - @override - String get aboutAppSubtitle => 'Conduit Informationen und Links'; - - @override - String get web => 'Web'; - - @override - String get imageGen => 'Bild-Gen'; - - @override - String get pinned => 'Angeheftet'; - - @override - String get folders => 'Ordner'; - - @override - String get archived => 'Archiviert'; - - @override - String get appLanguage => 'App-Sprache'; - - @override - String get darkMode => 'Dunkelmodus'; - - @override - String get webSearch => 'Websuche'; - - @override - String get webSearchDescription => 'Im Web suchen und Quellen zitieren.'; - - @override - String get imageGeneration => 'Bildgenerierung'; - - @override - String get imageGenerationDescription => - 'Bilder aus deinen Prompts erstellen.'; - - @override - String get copy => 'Kopieren'; - - @override - String get ttsListen => 'Anhören'; - - @override - String get ttsStop => 'Stoppen'; - - @override - String get edit => 'Bearbeiten'; - - @override - String get regenerate => 'Neu generieren'; - - @override - String get noConversationsYet => 'Noch keine Unterhaltungen'; - - @override - String get usernameOrEmailHint => - 'Gib deinen Benutzernamen oder deine E‑Mail ein'; - - @override - String get passwordHint => 'Gib dein Passwort ein'; - - @override - String get enterApiKey => 'Gib deinen API-Schlüssel ein'; - - @override - String get signingIn => 'Anmeldung läuft...'; - - @override - String get advancedSettings => 'Erweiterte Einstellungen'; - - @override - String get customHeaders => 'Benutzerdefinierte Header'; - - @override - String get customHeadersDescription => - 'Füge benutzerdefinierte HTTP-Header für Authentifizierung, API-Schlüssel oder spezielle Serveranforderungen hinzu.'; - - @override - String get allowSelfSignedCertificates => - 'Selbstsignierten Zertifikaten vertrauen'; - - @override - String get allowSelfSignedCertificatesDescription => - 'Akzeptiere das TLS-Zertifikat dieses Servers auch dann, wenn es selbstsigniert ist. Aktiviere diese Option nur für Server, denen du vertraust.'; - - @override - String get headerNameEmpty => 'Header-Name darf nicht leer sein'; - - @override - String get headerNameTooLong => 'Header-Name zu lang (max. 64 Zeichen)'; - - @override - String get headerNameInvalidChars => - 'Ungültiger Header-Name. Verwende nur Buchstaben, Zahlen und diese Zeichen: !#\$&-^_`|~'; - - @override - String headerNameReserved(String key) { - return 'Reservierten Header \"$key\" kann nicht überschrieben werden'; - } - - @override - String get headerValueEmpty => 'Header-Wert darf nicht leer sein'; - - @override - String get headerValueTooLong => 'Header-Wert zu lang (max. 1024 Zeichen)'; - - @override - String get headerValueInvalidChars => - 'Header-Wert enthält ungültige Zeichen. Nur druckbare ASCII-Zeichen verwenden.'; - - @override - String get headerValueUnsafe => - 'Header-Wert scheint potenziell unsicheren Inhalt zu enthalten'; - - @override - String headerAlreadyExists(String key) { - return 'Header \"$key\" existiert bereits. Zum Aktualisieren zuerst entfernen.'; - } - - @override - String get maxHeadersReachedDetail => - 'Maximal 10 benutzerdefinierte Header zulässig. Einige entfernen, um mehr hinzuzufügen.'; - - @override - String get noModelsAvailable => 'Keine Modelle verfügbar'; - - @override - String followingSystem(String theme) { - return 'Dem System folgen: $theme'; - } - - @override - String get themeDark => 'Dunkel'; - - @override - String get themePalette => 'Farbpalette'; - - @override - String get themePaletteConduitLabel => 'Conduit'; - - @override - String get themePaletteConduitDescription => - 'Schlichtes neutrales Design für Conduit.'; - - @override - String get themePaletteClaudeLabel => 'Claude'; - - @override - String get themePaletteClaudeDescription => - 'Warmes, haptisches Farbschema aus dem Claude-Webclient.'; - - @override - String get themePaletteT3ChatLabel => 'T3 Chat'; - - @override - String get themePaletteT3ChatDescription => - 'Verspielte Verläufe inspiriert vom T3-Stack.'; - - @override - String get themePaletteCatppuccinLabel => 'Catppuccin'; - - @override - String get themePaletteCatppuccinDescription => 'Sanfte Pastellpalette.'; - - @override - String get themePaletteTangerineLabel => 'Tangerine'; - - @override - String get themePaletteTangerineDescription => - 'Warmes Orange-Schiefer-Farbschema.'; - - @override - String get themeLight => 'Hell'; - - @override - String get currentlyUsingDarkTheme => 'Aktuell dunkles Thema'; - - @override - String get currentlyUsingLightTheme => 'Aktuell helles Thema'; - - @override - String get aboutConduit => 'Über Conduit'; - - @override - String versionLabel(String version, String build) { - return 'Version: $version ($build)'; - } - - @override - String get githubRepository => 'GitHub-Repository'; - - @override - String get unableToLoadAppInfo => - 'App-Informationen konnten nicht geladen werden'; - - @override - String get thinking => 'Denkt…'; - - @override - String get thoughts => 'Gedanken'; - - @override - String thoughtForDuration(String duration) { - return 'Gedacht für $duration'; - } - - @override - String get appCustomization => 'Anpassung'; - - @override - String get appCustomizationSubtitle => - 'Design, Sprache, Stimme und Quick Pills'; - - @override - String get quickActionsDescription => 'Schnellzugriffe im Chat'; - - @override - String quickActionsSelectedCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count Aktionen ausgewählt', - one: '$count Aktion ausgewählt', - zero: 'Keine Aktionen ausgewählt', - ); - return '$_temp0'; - } - - @override - String get autoSelectDescription => 'Lass die App das beste Modell auswählen'; - - @override - String get chatSettings => 'Chat'; - - @override - String get sendOnEnter => 'Mit Enter senden'; - - @override - String get sendOnEnterDescription => - 'Enter sendet (Soft-Tastatur). Cmd/Ctrl+Enter ebenfalls verfügbar'; - - @override - String get sttSettings => 'Sprache zu Text'; - - @override - String get sttEngineLabel => 'Erkennungs-Engine'; - - @override - String get sttEngineAuto => 'Automatisch'; - - @override - String get sttEngineDevice => 'Auf dem Gerät'; - - @override - String get sttEngineServer => 'Server'; - - @override - String get sttEngineAutoDescription => - 'Verwendet die Erkennung auf dem Gerät, wenn verfügbar, und greift sonst auf deinen Server zurück.'; - - @override - String get sttEngineDeviceDescription => - 'Behält Audio auf diesem Gerät. Spracheingabe funktioniert nicht, wenn das Gerät keine Spracherkennung unterstützt.'; - - @override - String get sttEngineServerDescription => - 'Sendet Aufnahmen immer an deinen OpenWebUI-Server zur Transkription.'; - - @override - String get sttDeviceUnavailableWarning => - 'Auf diesem Gerät steht keine Spracherkennung zur Verfügung.'; - - @override - String get sttServerUnavailableWarning => - 'Verbinde dich mit einem Server mit aktivierter Transkription, um diese Option zu nutzen.'; - - @override - String get sttSilenceDuration => 'Stille-Dauer'; - - @override - String get sttSilenceDurationDescription => - 'Zeit nach Stille warten, bevor die Aufnahme automatisch gestoppt wird'; - - @override - String get ttsEngineLabel => 'Engine'; - - @override - String get ttsEngineAuto => 'Automatisch'; - - @override - String get ttsEngineDevice => 'Auf dem Gerät'; - - @override - String get ttsEngineServer => 'Server'; - - @override - String get ttsEngineAutoDescription => - 'Verwendet die Sprachausgabe auf dem Gerät, wenn verfügbar, und greift sonst auf deinen Server zurück.'; - - @override - String get ttsEngineDeviceDescription => - 'Behält die Ausgabe auf diesem Gerät. Sprachausgabe funktioniert nicht, wenn das Gerät keine TTS-Unterstützung bietet.'; - - @override - String get ttsEngineServerDescription => - 'Sendet die Ausgabe immer an deinen OpenWebUI-Server.'; - - @override - String get ttsDeviceUnavailableWarning => - 'Sprachausgabe auf dem Gerät steht auf diesem Gerät nicht zur Verfügung.'; - - @override - String get ttsServerUnavailableWarning => - 'Verbinde dich mit einem Server mit aktivierter Sprachausgabe, um diese Option zu nutzen.'; - - @override - String get ttsSettings => 'Text zu Sprache'; - - @override - String get ttsVoice => 'Stimme'; - - @override - String get ttsSpeechRate => 'Sprechgeschwindigkeit'; - - @override - String get ttsPitch => 'Tonhöhe'; - - @override - String get ttsVolume => 'Lautstärke'; - - @override - String get ttsPreview => 'Stimme vorschau'; - - @override - String get ttsSystemDefault => 'Systemstandard'; - - @override - String get ttsSelectVoice => 'Stimme auswählen'; - - @override - String get ttsPreviewText => - 'Dies ist eine Vorschau der ausgewählten Stimme.'; - - @override - String get ttsNoVoicesAvailable => 'Keine Stimmen verfügbar'; - - @override - String ttsVoicesForLanguage(String language) { - return '$language-Stimmen'; - } - - @override - String get ttsOtherVoices => 'Andere Sprachen'; - - @override - String get error => 'Fehler'; - - @override - String errorWithMessage(String message) { - return 'Fehler: $message'; - } - - @override - String get networkTimeoutError => - 'Verbindung abgelaufen. Bitte überprüfe deine Internetverbindung und versuche es erneut.'; - - @override - String get networkUnreachableError => - 'Server nicht erreichbar. Bitte überprüfe die Server-URL und deine Internetverbindung.'; - - @override - String get networkServerNotResponding => - 'Server reagiert nicht. Bitte stelle sicher, dass der Server läuft und erreichbar ist.'; - - @override - String get networkGenericError => - 'Netzwerkproblem. Bitte überprüfe deine Internetverbindung.'; - - @override - String get serverError500 => - 'Der Server hat Probleme. Das ist meist nur vorübergehend.'; - - @override - String get serverErrorUnavailable => - 'Server vorübergehend nicht verfügbar. Bitte versuche es gleich noch einmal.'; - - @override - String get serverErrorTimeout => - 'Der Server hat zu lange für eine Antwort gebraucht. Bitte versuche es erneut.'; - - @override - String get serverErrorGeneric => - 'Der Server hat Schwierigkeiten. Bitte versuche es später erneut.'; - - @override - String get authSessionExpired => - 'Deine Sitzung ist abgelaufen. Bitte melde dich erneut an.'; - - @override - String get authForbidden => 'Du hast keine Berechtigung für diese Aktion.'; - - @override - String get authInvalidToken => - 'Der Authentifizierungstoken ist ungültig. Bitte melde dich erneut an.'; - - @override - String get authGenericError => - 'Authentifizierungsproblem. Bitte melde dich erneut an.'; - - @override - String get validationInvalidEmail => - 'Bitte gib eine gültige E-Mail-Adresse ein.'; - - @override - String get validationWeakPassword => - 'Das Passwort erfüllt die Anforderungen nicht. Bitte überprüfe es und versuche es erneut.'; - - @override - String get validationMissingRequired => 'Bitte fülle alle Pflichtfelder aus.'; - - @override - String get validationFormatError => - 'Einige Angaben haben ein falsches Format. Bitte überprüfe sie und versuche es erneut.'; - - @override - String get validationGenericError => - 'Bitte überprüfe deine Eingaben und versuche es erneut.'; - - @override - String get fileNotFound => - 'Datei nicht gefunden. Vielleicht wurde sie verschoben oder gelöscht.'; - - @override - String get fileAccessDenied => - 'Datei kann nicht geöffnet werden. Bitte prüfe die Berechtigungen.'; - - @override - String get fileTooLarge => - 'Datei ist zu groß. Bitte wähle eine kleinere Datei.'; - - @override - String get fileGenericError => - 'Problem mit der Datei. Bitte versuche eine andere Datei.'; - - @override - String get permissionCameraRequired => - 'Kamerazugriff erforderlich. Bitte aktiviere ihn in den Einstellungen.'; - - @override - String get permissionStorageRequired => - 'Speicherzugriff erforderlich. Bitte aktiviere ihn in den Einstellungen.'; - - @override - String get permissionMicrophoneRequired => - 'Mikrofonzugriff erforderlich. Bitte aktiviere ihn in den Einstellungen.'; - - @override - String get permissionGenericError => - 'Berechtigung erforderlich. Bitte prüfe die App-Berechtigungen in den Einstellungen.'; - - @override - String get actionRetryRequest => 'Versuche die Anfrage erneut.'; - - @override - String get actionVerifyConnection => 'Überprüfe deine Internetverbindung.'; - - @override - String get actionRetryOperation => 'Wiederhole den Vorgang.'; - - @override - String get actionRetryAfterDelay => - 'Warte einen Moment und versuche es dann erneut.'; - - @override - String get actionSignInToAccount => 'Melde dich bei deinem Konto an.'; - - @override - String get actionSelectAnotherFile => 'Wähle eine andere Datei.'; - - @override - String get actionOpenAppSettings => - 'Öffne die App-Einstellungen, um Berechtigungen zu erteilen.'; - - @override - String get actionRetryAfterPermission => - 'Versuche es erneut, nachdem du die Berechtigung erteilt hast.'; - - @override - String get actionReturnToPrevious => 'Zur vorherigen Ansicht zurückkehren.'; - - @override - String get display => 'Anzeige'; - - @override - String get realtime => 'Echtzeit'; - - @override - String get transportMode => 'Transportmodus'; - - @override - String get mode => 'Modus'; - - @override - String get transportModePolling => 'Polling-Fallback'; - - @override - String get transportModeWs => 'Nur WebSocket'; - - @override - String get transportModePollingInfo => - 'Fällt auf HTTP-Polling zurück, wenn WebSockets blockiert sind. Wechselt nach Möglichkeit zu WebSocket.'; - - @override - String get transportModeWsInfo => - 'Geringerer Overhead, kann jedoch hinter strikten Proxys/Firewalls fehlschlagen.'; -} diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart index 25f1d5b..e69de29 100644 --- a/lib/l10n/app_localizations_en.dart +++ b/lib/l10n/app_localizations_en.dart @@ -1,1199 +0,0 @@ -// ignore: unused_import -import 'package:intl/intl.dart' as intl; -import 'app_localizations.dart'; - -// ignore_for_file: type=lint - -/// The translations for English (`en`). -class AppLocalizationsEn extends AppLocalizations { - AppLocalizationsEn([String locale = 'en']) : super(locale); - - @override - String get appTitle => 'Conduit'; - - @override - String get retry => 'Retry'; - - @override - String get back => 'Back'; - - @override - String get you => 'You'; - - @override - String get loadingProfile => 'Loading profile...'; - - @override - String get unableToLoadProfile => 'Unable to load profile'; - - @override - String get pleaseCheckConnection => - 'Please check your connection and try again'; - - @override - String get connectionIssueTitle => 'Can\'t reach your server'; - - @override - String get connectionIssueSubtitle => - 'Reconnect to continue or sign out to choose a different server.'; - - @override - String get account => 'Account'; - - @override - String get supportConduit => 'Support Conduit'; - - @override - String get supportConduitSubtitle => - 'Keep Conduit independent by funding ongoing development.'; - - @override - String get githubSponsorsTitle => 'GitHub Sponsors'; - - @override - String get githubSponsorsSubtitle => - 'Become a recurring sponsor to fund roadmap items.'; - - @override - String get buyMeACoffeeTitle => 'Buy Me a Coffee'; - - @override - String get buyMeACoffeeSubtitle => 'Make a one-time donation to say thanks.'; - - @override - String get signOut => 'Sign Out'; - - @override - String get endYourSession => 'End your session'; - - @override - String get defaultModel => 'Default Model'; - - @override - String get autoSelect => 'Auto-select'; - - @override - String get loadingModels => 'Loading models...'; - - @override - String get failedToLoadModels => 'Failed to load models'; - - @override - String get availableModels => 'Available Models'; - - @override - String get modelCapabilityMultimodal => 'Multimodal'; - - @override - String get modelCapabilityReasoning => 'Reasoning'; - - @override - String get noResults => 'No results'; - - @override - String get searchModels => 'Search models...'; - - @override - String get errorMessage => 'Something went wrong. Please try again.'; - - @override - String get closeButtonSemantic => 'Close'; - - @override - String get loadingContent => 'Loading content'; - - @override - String get loadingShort => 'Loading'; - - @override - String loadingAnnouncement(String message) { - return 'Loading: $message'; - } - - @override - String errorAnnouncement(String error) { - return 'Error: $error'; - } - - @override - String errorAnnouncementWithSuggestion(String error, String suggestion) { - return 'Error: $error. $suggestion'; - } - - @override - String successAnnouncement(String message) { - return 'Success: $message'; - } - - @override - String get noItems => 'No items'; - - @override - String get noItemsToDisplay => 'No items to display'; - - @override - String get knowledgeBase => 'Knowledge Base'; - - @override - String get attachments => 'Attachments'; - - @override - String get takePhoto => 'Take a photo'; - - @override - String get document => 'Document'; - - @override - String get backToServerSetup => 'Back to server setup'; - - @override - String get connectedToServer => 'Connected to Server'; - - @override - String get signIn => 'Sign In'; - - @override - String get enterCredentials => - 'Enter your credentials to access your AI conversations'; - - @override - String get credentials => 'Credentials'; - - @override - String get apiKey => 'API Key'; - - @override - String get usernameOrEmail => 'Username or Email'; - - @override - String get password => 'Password'; - - @override - String get signInWithApiKey => 'Sign in with API Key'; - - @override - String get connectToServer => 'Connect to Server'; - - @override - String get enterServerAddress => - 'Enter your Open-WebUI server address to get started'; - - @override - String get serverUrl => 'Server URL'; - - @override - String get serverUrlHint => 'https://your-server.com'; - - @override - String get enterServerUrlSemantic => 'Enter your server URL or IP address'; - - @override - String get headerName => 'Header Name'; - - @override - String get headerValue => 'Header Value'; - - @override - String get headerValueHint => 'api-key-123 or Bearer token'; - - @override - String get addHeader => 'Add header'; - - @override - String get maximumHeadersReached => 'Maximum headers reached'; - - @override - String get removeHeader => 'Remove header'; - - @override - String get connecting => 'Connecting...'; - - @override - String get connectToServerButton => 'Connect to Server'; - - @override - String get demoModeActive => 'Demo Mode Active'; - - @override - String get skipServerSetupTryDemo => 'Skip server setup and try the demo'; - - @override - String get enterDemo => 'Enter Demo'; - - @override - String get demoBadge => 'Demo'; - - @override - String get serverNotOpenWebUI => - 'This does not appear to be an Open-WebUI server.'; - - @override - String get serverUrlEmpty => 'Server URL cannot be empty'; - - @override - String get invalidUrlFormat => 'Invalid URL format. Please check your input.'; - - @override - String get onlyHttpHttps => 'Only HTTP and HTTPS protocols are supported.'; - - @override - String get serverAddressRequired => - 'Server address is required (e.g., 192.168.1.10 or example.com).'; - - @override - String get portRange => 'Port must be between 1 and 65535.'; - - @override - String get invalidIpFormat => - 'Invalid IP address format. Use format like 192.168.1.10.'; - - @override - String get couldNotConnectGeneric => - 'Couldn\'t connect. Double-check the address and try again.'; - - @override - String get weCouldntReachServer => - 'We couldn\'t reach the server. Check your connection and that the server is running.'; - - @override - String get connectionTimedOut => - 'Connection timed out. The server might be busy or blocked by a firewall.'; - - @override - String get useHttpOrHttpsOnly => 'Use http:// or https:// only.'; - - @override - String get loginFailed => 'Login failed'; - - @override - String get invalidCredentials => - 'Invalid username or password. Please try again.'; - - @override - String get serverRedirectingHttps => - 'The server is redirecting requests. Check your server\'s HTTPS configuration.'; - - @override - String get unableToConnectServer => - 'Unable to connect to server. Please check your connection.'; - - @override - String get requestTimedOut => 'The request timed out. Please try again.'; - - @override - String get genericSignInFailed => - 'We couldn\'t sign you in. Check your credentials and server settings.'; - - @override - String get skip => 'Skip'; - - @override - String get next => 'Next'; - - @override - String get done => 'Done'; - - @override - String onboardStartTitle(String username) { - return 'Hello, $username'; - } - - @override - String get onboardStartSubtitle => - 'Choose a model to get started. Tap New Chat anytime.'; - - @override - String get onboardStartBullet1 => - 'Tap the model name in the top bar to switch models'; - - @override - String get onboardStartBullet2 => 'Use New Chat to reset context'; - - @override - String get onboardAttachTitle => 'Add context'; - - @override - String get onboardAttachSubtitle => - 'Ground replies with content from Workspace or photos.'; - - @override - String get onboardAttachBullet1 => 'Workspace: PDFs, docs, datasets'; - - @override - String get onboardAttachBullet2 => 'Photos: camera or library'; - - @override - String get onboardSpeakTitle => 'Speak naturally'; - - @override - String get onboardSpeakSubtitle => - 'Tap the mic to dictate with live waveform feedback.'; - - @override - String get onboardSpeakBullet1 => 'Stop anytime; partial text is preserved'; - - @override - String get onboardSpeakBullet2 => 'Great for quick notes or long prompts'; - - @override - String get onboardQuickTitle => 'Quick actions'; - - @override - String get onboardQuickSubtitle => - 'Open the menu to switch between Chats, Workspace, and Profile.'; - - @override - String get onboardQuickBullet1 => - 'Tap the menu to access Chats, Workspace, Profile'; - - @override - String get onboardQuickBullet2 => - 'Start New Chat or manage models from the top bar'; - - @override - String get attachmentLabel => 'Attachment'; - - @override - String get tools => 'Tools'; - - @override - String get voiceInput => 'Voice input'; - - @override - String get voice => 'Voice'; - - @override - String get voiceStatusListening => 'Listening…'; - - @override - String get voiceStatusRecording => 'Recording…'; - - @override - String get voiceHoldToTalk => 'Hold to talk'; - - @override - String get voiceAutoSend => 'Auto-send'; - - @override - String get voiceTranscript => 'Transcript'; - - @override - String get voicePromptSpeakNow => 'Speak now…'; - - @override - String get voicePromptTapStart => 'Tap Start to begin'; - - @override - String get voiceActionStop => 'Stop'; - - @override - String get voiceActionStart => 'Start'; - - @override - String get voiceCallTitle => 'Voice Call'; - - @override - String get voiceCallPause => 'Pause'; - - @override - String get voiceCallResume => 'Resume'; - - @override - String get voiceCallStop => 'Stop'; - - @override - String get voiceCallEnd => 'End Call'; - - @override - String get voiceCallReady => 'Ready'; - - @override - String get voiceCallConnecting => 'Connecting...'; - - @override - String get voiceCallListening => 'Listening'; - - @override - String get voiceCallPaused => 'Paused'; - - @override - String get voiceCallProcessing => 'Thinking...'; - - @override - String get voiceCallSpeaking => 'Speaking'; - - @override - String get voiceCallDisconnected => 'Disconnected'; - - @override - String get voiceCallErrorHelp => - 'Please check:\n• Microphone permissions are granted\n• Speech recognition is available on your device\n• You are connected to the server'; - - @override - String get messageInputLabel => 'Message input'; - - @override - String get messageInputHint => 'Type your message'; - - @override - String get messageHintText => 'Ask Conduit'; - - @override - String get stopGenerating => 'Stop generating'; - - @override - String get send => 'Send'; - - @override - String get codeCopiedToClipboard => 'Code copied to clipboard.'; - - @override - String get sendMessage => 'Send message'; - - @override - String get file => 'File'; - - @override - String get chooseDifferentFile => 'Choose Different File'; - - @override - String get photo => 'Photo'; - - @override - String get camera => 'Camera'; - - @override - String get apiUnavailable => 'API service not available'; - - @override - String get unableToLoadImage => 'Unable to load image'; - - @override - String notAnImageFile(String fileName) { - return 'Not an image file: $fileName'; - } - - @override - String failedToLoadImage(String error) { - return 'Failed to load image: $error'; - } - - @override - String get invalidDataUrl => 'Invalid data URL format'; - - @override - String get failedToDecodeImage => 'Failed to decode image'; - - @override - String get invalidImageFormat => 'Invalid image format'; - - @override - String get emptyImageData => 'Empty image data'; - - @override - String get confirm => 'Confirm'; - - @override - String get continueAction => 'Continue'; - - @override - String get cancel => 'Cancel'; - - @override - String get ok => 'OK'; - - @override - String get previousLabel => 'Prev'; - - @override - String get nextLabel => 'Next'; - - @override - String get inputField => 'Input field'; - - @override - String get checkConnection => 'Check Connection'; - - @override - String get openSettings => 'Open Settings'; - - @override - String get goBack => 'Go Back'; - - @override - String get technicalDetails => 'Technical Details'; - - @override - String requiredFieldLabel(String label) { - return '$label *'; - } - - @override - String get requiredFieldHelper => 'Required field'; - - @override - String get switchOnLabel => 'On'; - - @override - String get switchOffLabel => 'Off'; - - @override - String dialogSemanticLabel(String title) { - return 'Dialog: $title'; - } - - @override - String get save => 'Save'; - - @override - String get chooseModel => 'Choose Model'; - - @override - String get reviewerMode => 'REVIEWER MODE'; - - @override - String get selectLanguage => 'Select Language'; - - @override - String get newFolder => 'New Folder'; - - @override - String get folderName => 'Folder name'; - - @override - String get newChat => 'New Chat'; - - @override - String get more => 'More'; - - @override - String get clear => 'Clear'; - - @override - String get searchConversations => 'Search conversations...'; - - @override - String get create => 'Create'; - - @override - String get failedToCreateFolder => 'Failed to create folder'; - - @override - String get failedToMoveChat => 'Failed to move chat'; - - @override - String get failedToLoadChats => 'Failed to load chats'; - - @override - String get failedToUpdatePin => 'Failed to update pin'; - - @override - String get failedToDeleteChat => 'Failed to delete chat'; - - @override - String get manage => 'Manage'; - - @override - String get rename => 'Rename'; - - @override - String get delete => 'Delete'; - - @override - String get renameChat => 'Rename Chat'; - - @override - String get enterChatName => 'Enter chat name'; - - @override - String get failedToRenameChat => 'Failed to rename chat'; - - @override - String get failedToUpdateArchive => 'Failed to update archive'; - - @override - String get unarchive => 'Unarchive'; - - @override - String get archive => 'Archive'; - - @override - String get pin => 'Pin'; - - @override - String get unpin => 'Unpin'; - - @override - String get recent => 'Recent'; - - @override - String get system => 'System'; - - @override - String get english => 'English'; - - @override - String get deutsch => 'Deutsch'; - - @override - String get francais => 'Français'; - - @override - String get italiano => 'Italiano'; - - @override - String get espanol => 'Español'; - - @override - String get nederlands => 'Nederlands'; - - @override - String get russian => 'Русский'; - - @override - String get chinese => '中文'; - - @override - String get korean => '한국어'; - - @override - String get deleteMessagesTitle => 'Delete Messages'; - - @override - String deleteMessagesMessage(int count) { - return 'Delete $count messages?'; - } - - @override - String routeNotFound(String routeName) { - return 'Route not found: $routeName'; - } - - @override - String get deleteChatTitle => 'Delete Chat'; - - @override - String get deleteChatMessage => 'This chat will be permanently deleted.'; - - @override - String get deleteFolderTitle => 'Delete Folder'; - - @override - String get deleteFolderMessage => - 'This folder and its assignment references will be removed.'; - - @override - String get failedToDeleteFolder => 'Failed to delete folder'; - - @override - String get aboutApp => 'About'; - - @override - String get aboutAppSubtitle => 'Conduit information and links'; - - @override - String get web => 'Web'; - - @override - String get imageGen => 'Image Gen'; - - @override - String get pinned => 'Pinned'; - - @override - String get folders => 'Folders'; - - @override - String get archived => 'Archived'; - - @override - String get appLanguage => 'App Language'; - - @override - String get darkMode => 'Dark Mode'; - - @override - String get webSearch => 'Web Search'; - - @override - String get webSearchDescription => - 'Search the web and cite sources in replies.'; - - @override - String get imageGeneration => 'Image Generation'; - - @override - String get imageGenerationDescription => 'Create images from your prompts.'; - - @override - String get copy => 'Copy'; - - @override - String get ttsListen => 'Listen'; - - @override - String get ttsStop => 'Stop'; - - @override - String get edit => 'Edit'; - - @override - String get regenerate => 'Regenerate'; - - @override - String get noConversationsYet => 'No conversations yet'; - - @override - String get usernameOrEmailHint => 'Enter your username or email'; - - @override - String get passwordHint => 'Enter your password'; - - @override - String get enterApiKey => 'Enter your API key'; - - @override - String get signingIn => 'Signing in...'; - - @override - String get advancedSettings => 'Advanced Settings'; - - @override - String get customHeaders => 'Custom Headers'; - - @override - String get customHeadersDescription => - 'Add custom HTTP headers for authentication, API keys, or special server requirements.'; - - @override - String get allowSelfSignedCertificates => 'Trust self-signed certificates'; - - @override - String get allowSelfSignedCertificatesDescription => - 'Accept this server\'s TLS certificate even if it is self-signed. Enable only for servers you trust.'; - - @override - String get headerNameEmpty => 'Header name cannot be empty'; - - @override - String get headerNameTooLong => 'Header name too long (max 64 characters)'; - - @override - String get headerNameInvalidChars => - 'Invalid header name. Use only letters, numbers, and these symbols: !#\$&-^_`|~'; - - @override - String headerNameReserved(String key) { - return 'Cannot override reserved header \"$key\"'; - } - - @override - String get headerValueEmpty => 'Header value cannot be empty'; - - @override - String get headerValueTooLong => - 'Header value too long (max 1024 characters)'; - - @override - String get headerValueInvalidChars => - 'Header value contains invalid characters. Use only printable ASCII.'; - - @override - String get headerValueUnsafe => - 'Header value appears to contain potentially unsafe content'; - - @override - String headerAlreadyExists(String key) { - return 'Header \"$key\" already exists. Remove it first to update.'; - } - - @override - String get maxHeadersReachedDetail => - 'Maximum of 10 custom headers allowed. Remove some to add more.'; - - @override - String get noModelsAvailable => 'No models available'; - - @override - String followingSystem(String theme) { - return 'Following system: $theme'; - } - - @override - String get themeDark => 'Dark'; - - @override - String get themePalette => 'Accent palette'; - - @override - String get themePaletteConduitLabel => 'Conduit'; - - @override - String get themePaletteConduitDescription => - 'Clean neutral theme designed for Conduit.'; - - @override - String get themePaletteClaudeLabel => 'Claude'; - - @override - String get themePaletteClaudeDescription => - 'Warm, tactile palette lifted from the Claude web client.'; - - @override - String get themePaletteT3ChatLabel => 'T3 Chat'; - - @override - String get themePaletteT3ChatDescription => - 'Playful gradients inspired by the T3 Stack brand.'; - - @override - String get themePaletteCatppuccinLabel => 'Catppuccin'; - - @override - String get themePaletteCatppuccinDescription => 'Soft pastel palette.'; - - @override - String get themePaletteTangerineLabel => 'Tangerine'; - - @override - String get themePaletteTangerineDescription => - 'Warm orange-and-slate palette.'; - - @override - String get themeLight => 'Light'; - - @override - String get currentlyUsingDarkTheme => 'Currently using Dark theme'; - - @override - String get currentlyUsingLightTheme => 'Currently using Light theme'; - - @override - String get aboutConduit => 'About Conduit'; - - @override - String versionLabel(String version, String build) { - return 'Version: $version ($build)'; - } - - @override - String get githubRepository => 'GitHub Repository'; - - @override - String get unableToLoadAppInfo => 'Unable to load app info'; - - @override - String get thinking => 'Thinking…'; - - @override - String get thoughts => 'Thoughts'; - - @override - String thoughtForDuration(String duration) { - return 'Thought for $duration'; - } - - @override - String get appCustomization => 'Customization'; - - @override - String get appCustomizationSubtitle => - 'Theme, language, voice, and quickpills'; - - @override - String get quickActionsDescription => 'Quickpills in chat'; - - @override - String quickActionsSelectedCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count actions selected', - one: '1 action selected', - zero: 'No actions selected', - ); - return '$_temp0'; - } - - @override - String get autoSelectDescription => 'Let the app choose the best model'; - - @override - String get chatSettings => 'Chat'; - - @override - String get sendOnEnter => 'Send on Enter'; - - @override - String get sendOnEnterDescription => - 'Enter sends (soft keyboard). Cmd/Ctrl+Enter also available'; - - @override - String get sttSettings => 'Speech to Text'; - - @override - String get sttEngineLabel => 'Recognition engine'; - - @override - String get sttEngineAuto => 'Auto'; - - @override - String get sttEngineDevice => 'On device'; - - @override - String get sttEngineServer => 'Server'; - - @override - String get sttEngineAutoDescription => - 'Use on-device recognition when available and fall back to your server.'; - - @override - String get sttEngineDeviceDescription => - 'Keep audio on this device. Voice input stops working if on-device speech recognition isn’t supported.'; - - @override - String get sttEngineServerDescription => - 'Always send recordings to your OpenWebUI server for transcription.'; - - @override - String get sttDeviceUnavailableWarning => - 'On-device speech recognition isn’t available on this device.'; - - @override - String get sttServerUnavailableWarning => - 'Connect to a server with transcription enabled to use this option.'; - - @override - String get sttSilenceDuration => 'Silence Duration'; - - @override - String get sttSilenceDurationDescription => - 'Time to wait after silence before auto-stopping recording'; - - @override - String get ttsEngineLabel => 'Engine'; - - @override - String get ttsEngineAuto => 'Auto'; - - @override - String get ttsEngineDevice => 'On device'; - - @override - String get ttsEngineServer => 'Server'; - - @override - String get ttsEngineAutoDescription => - 'Use on-device speech when available and fall back to your server.'; - - @override - String get ttsEngineDeviceDescription => - 'Keep synthesis on this device. Voice playback stops working if on-device TTS isn’t supported.'; - - @override - String get ttsEngineServerDescription => - 'Always request audio from your OpenWebUI server.'; - - @override - String get ttsDeviceUnavailableWarning => - 'On-device text-to-speech isn’t available on this device.'; - - @override - String get ttsServerUnavailableWarning => - 'Connect to a server with text-to-speech enabled to use this option.'; - - @override - String get ttsSettings => 'Text to Speech'; - - @override - String get ttsVoice => 'Voice'; - - @override - String get ttsSpeechRate => 'Speech Rate'; - - @override - String get ttsPitch => 'Pitch'; - - @override - String get ttsVolume => 'Volume'; - - @override - String get ttsPreview => 'Preview Voice'; - - @override - String get ttsSystemDefault => 'System Default'; - - @override - String get ttsSelectVoice => 'Select Voice'; - - @override - String get ttsPreviewText => 'This is a preview of the selected voice.'; - - @override - String get ttsNoVoicesAvailable => 'No voices available'; - - @override - String ttsVoicesForLanguage(String language) { - return '$language Voices'; - } - - @override - String get ttsOtherVoices => 'Other Languages'; - - @override - String get error => 'Error'; - - @override - String errorWithMessage(String message) { - return 'Error: $message'; - } - - @override - String get networkTimeoutError => - 'Connection timed out. Please check your internet connection and try again.'; - - @override - String get networkUnreachableError => - 'Cannot reach the server. Please check your server URL and internet connection.'; - - @override - String get networkServerNotResponding => - 'Server is not responding. Please verify the server is running and accessible.'; - - @override - String get networkGenericError => - 'Network connection problem. Please check your internet connection.'; - - @override - String get serverError500 => - 'Server is experiencing issues. This is usually temporary.'; - - @override - String get serverErrorUnavailable => - 'Server is temporarily unavailable. Please try again in a moment.'; - - @override - String get serverErrorTimeout => - 'Server took too long to respond. Please try again.'; - - @override - String get serverErrorGeneric => - 'Server is having problems. Please try again later.'; - - @override - String get authSessionExpired => - 'Your session has expired. Please sign in again.'; - - @override - String get authForbidden => - 'You don\'t have permission to perform this action.'; - - @override - String get authInvalidToken => - 'Authentication token is invalid. Please sign in again.'; - - @override - String get authGenericError => - 'Authentication problem. Please sign in again.'; - - @override - String get validationInvalidEmail => 'Please enter a valid email address.'; - - @override - String get validationWeakPassword => - 'Password doesn\'t meet requirements. Please check and try again.'; - - @override - String get validationMissingRequired => 'Please fill in all required fields.'; - - @override - String get validationFormatError => - 'Some information is in the wrong format. Please check and try again.'; - - @override - String get validationGenericError => 'Please check your input and try again.'; - - @override - String get fileNotFound => - 'File not found. It may have been moved or deleted.'; - - @override - String get fileAccessDenied => - 'Cannot access the file. Please check permissions.'; - - @override - String get fileTooLarge => 'File is too large. Please choose a smaller file.'; - - @override - String get fileGenericError => - 'Problem with the file. Please try a different file.'; - - @override - String get permissionCameraRequired => - 'Camera permission is required. Please enable it in settings.'; - - @override - String get permissionStorageRequired => - 'Storage permission is required. Please enable it in settings.'; - - @override - String get permissionMicrophoneRequired => - 'Microphone permission is required. Please enable it in settings.'; - - @override - String get permissionGenericError => - 'Permission required. Please check app permissions in settings.'; - - @override - String get actionRetryRequest => 'Try the request again.'; - - @override - String get actionVerifyConnection => 'Verify your internet connection.'; - - @override - String get actionRetryOperation => 'Retry the operation.'; - - @override - String get actionRetryAfterDelay => 'Wait a moment then try again.'; - - @override - String get actionSignInToAccount => 'Sign in to your account.'; - - @override - String get actionSelectAnotherFile => 'Select another file.'; - - @override - String get actionOpenAppSettings => 'Open app settings to grant permissions.'; - - @override - String get actionRetryAfterPermission => 'Retry after granting permission.'; - - @override - String get actionReturnToPrevious => 'Return to previous screen.'; - - @override - String get display => 'Display'; - - @override - String get realtime => 'Realtime'; - - @override - String get transportMode => 'Transport mode'; - - @override - String get mode => 'Mode'; - - @override - String get transportModePolling => 'Polling fallback'; - - @override - String get transportModeWs => 'WebSocket only'; - - @override - String get transportModePollingInfo => - 'Falls back to HTTP polling when WebSocket is blocked. Upgrades to WebSocket when possible.'; - - @override - String get transportModeWsInfo => - 'Lower overhead, but may fail behind strict proxies/firewalls.'; -} diff --git a/lib/l10n/app_localizations_fr.dart b/lib/l10n/app_localizations_fr.dart index 820e721..e69de29 100644 --- a/lib/l10n/app_localizations_fr.dart +++ b/lib/l10n/app_localizations_fr.dart @@ -1,1220 +0,0 @@ -// ignore: unused_import -import 'package:intl/intl.dart' as intl; -import 'app_localizations.dart'; - -// ignore_for_file: type=lint - -/// The translations for French (`fr`). -class AppLocalizationsFr extends AppLocalizations { - AppLocalizationsFr([String locale = 'fr']) : super(locale); - - @override - String get appTitle => 'Conduit'; - - @override - String get retry => 'Réessayer'; - - @override - String get back => 'Retour'; - - @override - String get you => 'Vous'; - - @override - String get loadingProfile => 'Chargement du profil...'; - - @override - String get unableToLoadProfile => 'Impossible de charger le profil'; - - @override - String get pleaseCheckConnection => - 'Veuillez vérifier votre connexion et réessayer'; - - @override - String get connectionIssueTitle => 'Impossible d\'atteindre votre serveur'; - - @override - String get connectionIssueSubtitle => - 'Reconnectez-vous pour continuer ou déconnectez-vous pour choisir un autre serveur.'; - - @override - String get account => 'Compte'; - - @override - String get supportConduit => 'Soutenir Conduit'; - - @override - String get supportConduitSubtitle => - 'Financez le développement continu et les nouvelles fonctionnalités.'; - - @override - String get githubSponsorsTitle => 'GitHub Sponsors'; - - @override - String get githubSponsorsSubtitle => - 'Devenez sponsor récurrent pour soutenir la feuille de route.'; - - @override - String get buyMeACoffeeTitle => 'Buy Me a Coffee'; - - @override - String get buyMeACoffeeSubtitle => - 'Faites un don ponctuel pour nous encourager.'; - - @override - String get signOut => 'Se déconnecter'; - - @override - String get endYourSession => 'Terminer votre session'; - - @override - String get defaultModel => 'Modèle par défaut'; - - @override - String get autoSelect => 'Sélection automatique'; - - @override - String get loadingModels => 'Chargement des modèles...'; - - @override - String get failedToLoadModels => 'Échec du chargement des modèles'; - - @override - String get availableModels => 'Modèles disponibles'; - - @override - String get modelCapabilityMultimodal => 'Multimodal'; - - @override - String get modelCapabilityReasoning => 'Raisonnement'; - - @override - String get noResults => 'Aucun résultat'; - - @override - String get searchModels => 'Rechercher des modèles...'; - - @override - String get errorMessage => 'Une erreur s\'est produite. Veuillez réessayer.'; - - @override - String get closeButtonSemantic => 'Fermer'; - - @override - String get loadingContent => 'Chargement du contenu'; - - @override - String get loadingShort => 'Chargement'; - - @override - String loadingAnnouncement(String message) { - return 'Chargement : $message'; - } - - @override - String errorAnnouncement(String error) { - return 'Erreur : $error'; - } - - @override - String errorAnnouncementWithSuggestion(String error, String suggestion) { - return 'Erreur : $error. $suggestion'; - } - - @override - String successAnnouncement(String message) { - return 'Succès : $message'; - } - - @override - String get noItems => 'Aucun élément'; - - @override - String get noItemsToDisplay => 'Aucun élément à afficher'; - - @override - String get knowledgeBase => 'Base de connaissances'; - - @override - String get attachments => 'Pièces jointes'; - - @override - String get takePhoto => 'Prendre une photo'; - - @override - String get document => 'Document'; - - @override - String get backToServerSetup => 'Retour à la configuration du serveur'; - - @override - String get connectedToServer => 'Connecté au serveur'; - - @override - String get signIn => 'Se connecter'; - - @override - String get enterCredentials => - 'Entrez vos identifiants pour accéder à vos conversations IA'; - - @override - String get credentials => 'Identifiants'; - - @override - String get apiKey => 'Clé API'; - - @override - String get usernameOrEmail => 'Nom d\'utilisateur ou e‑mail'; - - @override - String get password => 'Mot de passe'; - - @override - String get signInWithApiKey => 'Se connecter avec une clé API'; - - @override - String get connectToServer => 'Se connecter au serveur'; - - @override - String get enterServerAddress => - 'Saisissez l\'adresse de votre serveur Open-WebUI pour commencer'; - - @override - String get serverUrl => 'URL du serveur'; - - @override - String get serverUrlHint => 'https://votre-serveur.com'; - - @override - String get enterServerUrlSemantic => - 'Saisissez l\'URL ou l\'adresse IP de votre serveur'; - - @override - String get headerName => 'Nom de l\'en-tête'; - - @override - String get headerValue => 'Valeur de l\'en-tête'; - - @override - String get headerValueHint => 'api-key-123 ou jeton Bearer'; - - @override - String get addHeader => 'Ajouter l\'en-tête'; - - @override - String get maximumHeadersReached => 'Nombre maximal atteint'; - - @override - String get removeHeader => 'Supprimer l\'en-tête'; - - @override - String get connecting => 'Connexion en cours...'; - - @override - String get connectToServerButton => 'Se connecter au serveur'; - - @override - String get demoModeActive => 'Mode démo activé'; - - @override - String get skipServerSetupTryDemo => - 'Ignorer la configuration et essayer la démo'; - - @override - String get enterDemo => 'Entrer en démo'; - - @override - String get demoBadge => 'Démo'; - - @override - String get serverNotOpenWebUI => - 'Ceci ne semble pas être un serveur Open-WebUI.'; - - @override - String get serverUrlEmpty => 'L\'URL du serveur ne peut pas être vide'; - - @override - String get invalidUrlFormat => - 'Format d\'URL invalide. Veuillez vérifier votre saisie.'; - - @override - String get onlyHttpHttps => - 'Seuls les protocoles HTTP et HTTPS sont pris en charge.'; - - @override - String get serverAddressRequired => - 'Adresse du serveur requise (ex. 192.168.1.10 ou example.com).'; - - @override - String get portRange => 'Le port doit être compris entre 1 et 65535.'; - - @override - String get invalidIpFormat => - 'Format d\'IP invalide. Exemple : 192.168.1.10.'; - - @override - String get couldNotConnectGeneric => - 'Connexion impossible. Vérifiez l\'adresse et réessayez.'; - - @override - String get weCouldntReachServer => - 'Impossible d\'atteindre le serveur. Vérifiez la connexion et l\'état du serveur.'; - - @override - String get connectionTimedOut => - 'Délai d\'attente dépassé. Le serveur est peut-être occupé ou bloqué.'; - - @override - String get useHttpOrHttpsOnly => 'Utilisez uniquement http:// ou https://.'; - - @override - String get loginFailed => 'Échec de la connexion'; - - @override - String get invalidCredentials => - 'Nom d\'utilisateur ou mot de passe invalide. Réessayez.'; - - @override - String get serverRedirectingHttps => - 'Le serveur redirige les requêtes. Vérifiez la configuration HTTPS.'; - - @override - String get unableToConnectServer => - 'Impossible de se connecter au serveur. Vérifiez votre connexion.'; - - @override - String get requestTimedOut => 'Délai d\'attente dépassé. Réessayez.'; - - @override - String get genericSignInFailed => - 'Connexion impossible. Vérifiez vos identifiants et le serveur.'; - - @override - String get skip => 'Ignorer'; - - @override - String get next => 'Suivant'; - - @override - String get done => 'Terminé'; - - @override - String onboardStartTitle(String username) { - return 'Bonjour, $username'; - } - - @override - String get onboardStartSubtitle => - 'Choisissez un modèle pour commencer. Touchez Nouveau chat à tout moment.'; - - @override - String get onboardStartBullet1 => - 'Touchez le nom du modèle en haut pour changer'; - - @override - String get onboardStartBullet2 => - 'Utilisez Nouveau chat pour réinitialiser le contexte'; - - @override - String get onboardAttachTitle => 'Ajouter du contexte'; - - @override - String get onboardAttachSubtitle => - 'Ancrez les réponses avec l\'Espace de travail ou des photos.'; - - @override - String get onboardAttachBullet1 => - 'Espace de travail : PDF, documents, jeux de données'; - - @override - String get onboardAttachBullet2 => 'Photos : appareil photo ou galerie'; - - @override - String get onboardSpeakTitle => 'Parlez naturellement'; - - @override - String get onboardSpeakSubtitle => - 'Touchez le micro pour dicter avec retour visuel.'; - - @override - String get onboardSpeakBullet1 => - 'Arrêtez à tout moment ; le texte partiel est conservé'; - - @override - String get onboardSpeakBullet2 => - 'Idéal pour des notes rapides ou de longs prompts'; - - @override - String get onboardQuickTitle => 'Actions rapides'; - - @override - String get onboardQuickSubtitle => - 'Ouvrez le menu pour passer entre Chats, Espace de travail et Profil.'; - - @override - String get onboardQuickBullet1 => - 'Touchez le menu pour accéder à Chats, Espace, Profil'; - - @override - String get onboardQuickBullet2 => - 'Lancez Nouveau chat ou gérez les modèles depuis la barre'; - - @override - String get attachmentLabel => 'Pièce jointe'; - - @override - String get tools => 'Outils'; - - @override - String get voiceInput => 'Entrée vocale'; - - @override - String get voice => 'Voix'; - - @override - String get voiceStatusListening => 'Écoute…'; - - @override - String get voiceStatusRecording => 'Enregistrement…'; - - @override - String get voiceHoldToTalk => 'Maintenir pour parler'; - - @override - String get voiceAutoSend => 'Envoi automatique'; - - @override - String get voiceTranscript => 'Transcription'; - - @override - String get voicePromptSpeakNow => 'Parlez maintenant…'; - - @override - String get voicePromptTapStart => 'Appuyez sur \"Démarrer\" pour commencer'; - - @override - String get voiceActionStop => 'Arrêter'; - - @override - String get voiceActionStart => 'Démarrer'; - - @override - String get voiceCallTitle => 'Appel vocal'; - - @override - String get voiceCallPause => 'Pause'; - - @override - String get voiceCallResume => 'Reprendre'; - - @override - String get voiceCallStop => 'Arrêter'; - - @override - String get voiceCallEnd => 'Terminer l\'appel'; - - @override - String get voiceCallReady => 'Prêt'; - - @override - String get voiceCallConnecting => 'Connexion…'; - - @override - String get voiceCallListening => 'Écoute'; - - @override - String get voiceCallPaused => 'En pause'; - - @override - String get voiceCallProcessing => 'Réflexion…'; - - @override - String get voiceCallSpeaking => 'Parle'; - - @override - String get voiceCallDisconnected => 'Déconnecté'; - - @override - String get voiceCallErrorHelp => - 'Veuillez vérifier :\n• Les autorisations du microphone sont accordées\n• La reconnaissance vocale est disponible sur votre appareil\n• Vous êtes connecté au serveur'; - - @override - String get messageInputLabel => 'Saisie du message'; - - @override - String get messageInputHint => 'Saisissez votre message'; - - @override - String get messageHintText => 'Demander à Conduit'; - - @override - String get stopGenerating => 'Arrêter la génération'; - - @override - String get send => 'Envoyer'; - - @override - String get codeCopiedToClipboard => 'Code copié dans le presse-papiers.'; - - @override - String get sendMessage => 'Envoyer le message'; - - @override - String get file => 'Fichier'; - - @override - String get chooseDifferentFile => 'Choisir un autre fichier'; - - @override - String get photo => 'Photo'; - - @override - String get camera => 'Appareil photo'; - - @override - String get apiUnavailable => 'Service API indisponible'; - - @override - String get unableToLoadImage => 'Impossible de charger l\'image'; - - @override - String notAnImageFile(String fileName) { - return 'Ce n\'est pas un fichier image : $fileName'; - } - - @override - String failedToLoadImage(String error) { - return 'Échec du chargement de l\'image : $error'; - } - - @override - String get invalidDataUrl => 'Format d\'URL de données invalide'; - - @override - String get failedToDecodeImage => 'Échec du décodage de l\'image'; - - @override - String get invalidImageFormat => 'Format d\'image invalide'; - - @override - String get emptyImageData => 'Données d\'image vides'; - - @override - String get confirm => 'Confirmer'; - - @override - String get continueAction => 'Continuer'; - - @override - String get cancel => 'Annuler'; - - @override - String get ok => 'OK'; - - @override - String get previousLabel => 'Précédent'; - - @override - String get nextLabel => 'Suivant'; - - @override - String get inputField => 'Champ de saisie'; - - @override - String get checkConnection => 'Vérifier la connexion'; - - @override - String get openSettings => 'Ouvrir les réglages'; - - @override - String get goBack => 'Retour'; - - @override - String get technicalDetails => 'Détails techniques'; - - @override - String requiredFieldLabel(String label) { - return '$label *'; - } - - @override - String get requiredFieldHelper => 'Champ obligatoire'; - - @override - String get switchOnLabel => 'Activé'; - - @override - String get switchOffLabel => 'Désactivé'; - - @override - String dialogSemanticLabel(String title) { - return 'Dialogue : $title'; - } - - @override - String get save => 'Enregistrer'; - - @override - String get chooseModel => 'Choisir le modèle'; - - @override - String get reviewerMode => 'REVIEWER MODE'; - - @override - String get selectLanguage => 'Sélectionner la langue'; - - @override - String get newFolder => 'Nouveau dossier'; - - @override - String get folderName => 'Nom du dossier'; - - @override - String get newChat => 'Nouveau chat'; - - @override - String get more => 'Plus'; - - @override - String get clear => 'Effacer'; - - @override - String get searchConversations => 'Rechercher des conversations...'; - - @override - String get create => 'Créer'; - - @override - String get failedToCreateFolder => 'Échec de la création du dossier'; - - @override - String get failedToMoveChat => 'Échec du déplacement du chat'; - - @override - String get failedToLoadChats => 'Échec du chargement des chats'; - - @override - String get failedToUpdatePin => 'Échec de la mise à jour de l\'épingle'; - - @override - String get failedToDeleteChat => 'Échec de la suppression du chat'; - - @override - String get manage => 'Gérer'; - - @override - String get rename => 'Renommer'; - - @override - String get delete => 'Supprimer'; - - @override - String get renameChat => 'Renommer le chat'; - - @override - String get enterChatName => 'Saisir le nom du chat'; - - @override - String get failedToRenameChat => 'Échec du renommage du chat'; - - @override - String get failedToUpdateArchive => 'Échec de la mise à jour de l\'archive'; - - @override - String get unarchive => 'Désarchiver'; - - @override - String get archive => 'Archiver'; - - @override - String get pin => 'Épingler'; - - @override - String get unpin => 'Détacher'; - - @override - String get recent => 'Récent'; - - @override - String get system => 'Système'; - - @override - String get english => 'Anglais'; - - @override - String get deutsch => 'Allemand'; - - @override - String get francais => 'Français'; - - @override - String get italiano => 'Italien'; - - @override - String get espanol => 'Espagnol'; - - @override - String get nederlands => 'Néerlandais'; - - @override - String get russian => 'Russe'; - - @override - String get chinese => 'Chinois'; - - @override - String get korean => 'Coréen'; - - @override - String get deleteMessagesTitle => 'Supprimer les messages'; - - @override - String deleteMessagesMessage(int count) { - return 'Supprimer $count messages ?'; - } - - @override - String routeNotFound(String routeName) { - return 'Route introuvable : $routeName'; - } - - @override - String get deleteChatTitle => 'Supprimer le chat'; - - @override - String get deleteChatMessage => 'Ce chat sera supprimé définitivement.'; - - @override - String get deleteFolderTitle => 'Supprimer le dossier'; - - @override - String get deleteFolderMessage => - 'Ce dossier et ses associations seront supprimés.'; - - @override - String get failedToDeleteFolder => 'Échec de la suppression du dossier'; - - @override - String get aboutApp => 'À propos'; - - @override - String get aboutAppSubtitle => 'Informations et liens Conduit'; - - @override - String get web => 'Web'; - - @override - String get imageGen => 'Gén. image'; - - @override - String get pinned => 'Épinglé'; - - @override - String get folders => 'Dossiers'; - - @override - String get archived => 'Archivé'; - - @override - String get appLanguage => 'Langue de l\'app'; - - @override - String get darkMode => 'Mode sombre'; - - @override - String get webSearch => 'Recherche Web'; - - @override - String get webSearchDescription => - 'Recherchez sur le web et citez les sources.'; - - @override - String get imageGeneration => 'Génération d\'images'; - - @override - String get imageGenerationDescription => - 'Créez des images à partir de vos prompts.'; - - @override - String get copy => 'Copier'; - - @override - String get ttsListen => 'Écouter'; - - @override - String get ttsStop => 'Arrêter'; - - @override - String get edit => 'Modifier'; - - @override - String get regenerate => 'Régénérer'; - - @override - String get noConversationsYet => 'Aucune conversation pour l\'instant'; - - @override - String get usernameOrEmailHint => 'Entrez votre nom d\'utilisateur ou e‑mail'; - - @override - String get passwordHint => 'Entrez votre mot de passe'; - - @override - String get enterApiKey => 'Entrez votre clé API'; - - @override - String get signingIn => 'Connexion en cours...'; - - @override - String get advancedSettings => 'Paramètres avancés'; - - @override - String get customHeaders => 'En-têtes personnalisés'; - - @override - String get customHeadersDescription => - 'Ajoutez des en-têtes HTTP personnalisés pour l\'authentification, les clés API ou des exigences spécifiques du serveur.'; - - @override - String get allowSelfSignedCertificates => - 'Faire confiance aux certificats auto-signés'; - - @override - String get allowSelfSignedCertificatesDescription => - 'Acceptez le certificat TLS de ce serveur même s\'il est auto-signé. Activez cette option uniquement pour les serveurs auxquels vous faites confiance.'; - - @override - String get headerNameEmpty => 'Le nom de l\'en-tête ne peut pas être vide'; - - @override - String get headerNameTooLong => - 'Nom d\'en-tête trop long (max 64 caractères)'; - - @override - String get headerNameInvalidChars => - 'Nom d\'en-tête invalide. Utilisez uniquement des lettres, des chiffres et ces symboles : !#\$&-^_`|~'; - - @override - String headerNameReserved(String key) { - return 'Impossible d\'écraser l\'en-tête réservé « $key »'; - } - - @override - String get headerValueEmpty => - 'La valeur de l\'en-tête ne peut pas être vide'; - - @override - String get headerValueTooLong => - 'Valeur d\'en-tête trop longue (max 1024 caractères)'; - - @override - String get headerValueInvalidChars => - 'La valeur de l\'en-tête contient des caractères invalides. Utilisez uniquement des caractères ASCII imprimables.'; - - @override - String get headerValueUnsafe => - 'La valeur de l\'en-tête semble contenir du contenu potentiellement dangereux'; - - @override - String headerAlreadyExists(String key) { - return 'L\'en-tête « $key » existe déjà. Supprimez-le d\'abord pour le modifier.'; - } - - @override - String get maxHeadersReachedDetail => - 'Maximum 10 en-têtes personnalisés. Supprimez-en pour en ajouter.'; - - @override - String get noModelsAvailable => 'Aucun modèle disponible'; - - @override - String followingSystem(String theme) { - return 'Selon le système : $theme'; - } - - @override - String get themeDark => 'Sombre'; - - @override - String get themePalette => 'Palette de couleurs'; - - @override - String get themePaletteConduitLabel => 'Conduit'; - - @override - String get themePaletteConduitDescription => - 'Thème neutre et épuré conçu pour Conduit.'; - - @override - String get themePaletteClaudeLabel => 'Claude'; - - @override - String get themePaletteClaudeDescription => - 'Palette chaleureuse inspirée du client web de Claude.'; - - @override - String get themePaletteT3ChatLabel => 'T3 Chat'; - - @override - String get themePaletteT3ChatDescription => - 'Dégradés ludiques inspirés de la marque T3 Stack.'; - - @override - String get themePaletteCatppuccinLabel => 'Catppuccin'; - - @override - String get themePaletteCatppuccinDescription => - 'Palette douce de tons pastel.'; - - @override - String get themePaletteTangerineLabel => 'Tangerine'; - - @override - String get themePaletteTangerineDescription => - 'Palette chaleureuse d\'oranges et d\'ardoises.'; - - @override - String get themeLight => 'Clair'; - - @override - String get currentlyUsingDarkTheme => 'Thème sombre actuellement utilisé'; - - @override - String get currentlyUsingLightTheme => 'Thème clair actuellement utilisé'; - - @override - String get aboutConduit => 'À propos de Conduit'; - - @override - String versionLabel(String version, String build) { - return 'Version : $version ($build)'; - } - - @override - String get githubRepository => 'Dépôt GitHub'; - - @override - String get unableToLoadAppInfo => - 'Impossible de charger les informations de l\'application'; - - @override - String get thinking => 'Réflexion…'; - - @override - String get thoughts => 'Réflexions'; - - @override - String thoughtForDuration(String duration) { - return 'A réfléchi pendant $duration'; - } - - @override - String get appCustomization => 'Personnalisation'; - - @override - String get appCustomizationSubtitle => 'Thème, langue, voix et quickpills'; - - @override - String get quickActionsDescription => 'Raccourcis dans le chat'; - - @override - String quickActionsSelectedCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count actions sélectionnées', - one: '$count action sélectionnée', - zero: 'Aucune action sélectionnée', - ); - return '$_temp0'; - } - - @override - String get autoSelectDescription => - 'Laissez l\'application choisir le meilleur modèle'; - - @override - String get chatSettings => 'Discussion'; - - @override - String get sendOnEnter => 'Envoyer avec Entrée'; - - @override - String get sendOnEnterDescription => - 'Entrée envoie (clavier logiciel). Cmd/Ctrl+Entrée aussi disponible'; - - @override - String get sttSettings => 'Voix vers texte'; - - @override - String get sttEngineLabel => 'Moteur de reconnaissance'; - - @override - String get sttEngineAuto => 'Auto'; - - @override - String get sttEngineDevice => 'Sur l’appareil'; - - @override - String get sttEngineServer => 'Serveur'; - - @override - String get sttEngineAutoDescription => - 'Utilise la reconnaissance sur l’appareil quand c’est possible, sinon bascule vers votre serveur.'; - - @override - String get sttEngineDeviceDescription => - 'Conserve l’audio sur cet appareil. L’entrée vocale cesse de fonctionner si la reconnaissance vocale n’est pas prise en charge.'; - - @override - String get sttEngineServerDescription => - 'Envoie toujours les enregistrements à votre serveur OpenWebUI pour transcription.'; - - @override - String get sttDeviceUnavailableWarning => - 'La reconnaissance vocale sur l’appareil n’est pas disponible sur cet appareil.'; - - @override - String get sttServerUnavailableWarning => - 'Connectez-vous à un serveur avec la transcription activée pour utiliser cette option.'; - - @override - String get sttSilenceDuration => 'Durée du silence'; - - @override - String get sttSilenceDurationDescription => - 'Temps d\'attente après le silence avant d\'arrêter automatiquement l\'enregistrement'; - - @override - String get ttsEngineLabel => 'Moteur'; - - @override - String get ttsEngineAuto => 'Auto'; - - @override - String get ttsEngineDevice => 'Sur l\'appareil'; - - @override - String get ttsEngineServer => 'Serveur'; - - @override - String get ttsEngineAutoDescription => - 'Utilise la synthèse locale quand c’est possible, sinon bascule vers votre serveur.'; - - @override - String get ttsEngineDeviceDescription => - 'Garde la synthèse sur cet appareil. La lecture vocale ne fonctionne plus si l’appareil n’offre pas la synthèse vocale.'; - - @override - String get ttsEngineServerDescription => - 'Demande toujours l\'audio à votre serveur OpenWebUI.'; - - @override - String get ttsDeviceUnavailableWarning => - 'La synthèse vocale sur l’appareil n’est pas disponible sur cet appareil.'; - - @override - String get ttsServerUnavailableWarning => - 'Connectez-vous à un serveur avec la synthèse vocale activée pour utiliser cette option.'; - - @override - String get ttsSettings => 'Synthèse vocale'; - - @override - String get ttsVoice => 'Voix'; - - @override - String get ttsSpeechRate => 'Vitesse de parole'; - - @override - String get ttsPitch => 'Hauteur'; - - @override - String get ttsVolume => 'Volume'; - - @override - String get ttsPreview => 'Aperçu de la voix'; - - @override - String get ttsSystemDefault => 'Système par défaut'; - - @override - String get ttsSelectVoice => 'Sélectionner la voix'; - - @override - String get ttsPreviewText => 'Ceci est un aperçu de la voix sélectionnée.'; - - @override - String get ttsNoVoicesAvailable => 'Aucune voix disponible'; - - @override - String ttsVoicesForLanguage(String language) { - return 'Voix $language'; - } - - @override - String get ttsOtherVoices => 'Autres langues'; - - @override - String get error => 'Erreur'; - - @override - String errorWithMessage(String message) { - return 'Erreur : $message'; - } - - @override - String get networkTimeoutError => - 'La connexion a expiré. Vérifiez votre connexion Internet et réessayez.'; - - @override - String get networkUnreachableError => - 'Impossible d\'atteindre le serveur. Vérifiez l\'URL du serveur et votre connexion Internet.'; - - @override - String get networkServerNotResponding => - 'Le serveur ne répond pas. Vérifiez qu\'il est en cours d\'exécution et accessible.'; - - @override - String get networkGenericError => - 'Problème de connexion réseau. Vérifiez votre connexion Internet.'; - - @override - String get serverError500 => - 'Le serveur rencontre des problèmes. Cela est généralement temporaire.'; - - @override - String get serverErrorUnavailable => - 'Le serveur est temporairement indisponible. Réessayez dans un instant.'; - - @override - String get serverErrorTimeout => - 'Le serveur a mis trop de temps à répondre. Réessayez.'; - - @override - String get serverErrorGeneric => - 'Le serveur rencontre des difficultés. Réessayez plus tard.'; - - @override - String get authSessionExpired => - 'Votre session a expiré. Veuillez vous reconnecter.'; - - @override - String get authForbidden => - 'Vous n\'avez pas l\'autorisation d\'effectuer cette action.'; - - @override - String get authInvalidToken => - 'Le jeton d\'authentification est invalide. Veuillez vous reconnecter.'; - - @override - String get authGenericError => - 'Problème d\'authentification. Veuillez vous reconnecter.'; - - @override - String get validationInvalidEmail => - 'Veuillez saisir une adresse e-mail valide.'; - - @override - String get validationWeakPassword => - 'Le mot de passe ne respecte pas les exigences. Vérifiez-le et réessayez.'; - - @override - String get validationMissingRequired => - 'Veuillez remplir tous les champs obligatoires.'; - - @override - String get validationFormatError => - 'Certaines informations sont au mauvais format. Vérifiez-les et réessayez.'; - - @override - String get validationGenericError => - 'Veuillez vérifier vos informations et réessayer.'; - - @override - String get fileNotFound => - 'Fichier introuvable. Il a peut-être été déplacé ou supprimé.'; - - @override - String get fileAccessDenied => - 'Impossible d\'accéder au fichier. Vérifiez les autorisations.'; - - @override - String get fileTooLarge => - 'Le fichier est trop volumineux. Choisissez un fichier plus petit.'; - - @override - String get fileGenericError => - 'Problème avec le fichier. Essayez un autre fichier.'; - - @override - String get permissionCameraRequired => - 'L\'autorisation de la caméra est nécessaire. Activez-la dans les paramètres.'; - - @override - String get permissionStorageRequired => - 'L\'autorisation de stockage est nécessaire. Activez-la dans les paramètres.'; - - @override - String get permissionMicrophoneRequired => - 'L\'autorisation du microphone est nécessaire. Activez-la dans les paramètres.'; - - @override - String get permissionGenericError => - 'Autorisation requise. Vérifiez les autorisations de l\'application dans les paramètres.'; - - @override - String get actionRetryRequest => 'Réessayez la requête.'; - - @override - String get actionVerifyConnection => 'Vérifiez votre connexion Internet.'; - - @override - String get actionRetryOperation => 'Réessayez l\'opération.'; - - @override - String get actionRetryAfterDelay => 'Attendez un instant puis réessayez.'; - - @override - String get actionSignInToAccount => 'Connectez-vous à votre compte.'; - - @override - String get actionSelectAnotherFile => 'Sélectionnez un autre fichier.'; - - @override - String get actionOpenAppSettings => - 'Ouvrez les paramètres de l\'application pour accorder les autorisations.'; - - @override - String get actionRetryAfterPermission => - 'Réessayez après avoir accordé l\'autorisation.'; - - @override - String get actionReturnToPrevious => 'Revenir à l\'écran précédent.'; - - @override - String get display => 'Affichage'; - - @override - String get realtime => 'Temps réel'; - - @override - String get transportMode => 'Mode de transport'; - - @override - String get mode => 'Mode'; - - @override - String get transportModePolling => 'Polling de secours'; - - @override - String get transportModeWs => 'WebSocket uniquement'; - - @override - String get transportModePollingInfo => - 'Bascule sur HTTP polling lorsque WebSocket est bloqué. Repasse à WebSocket dès que possible.'; - - @override - String get transportModeWsInfo => - 'Moins de surcharge, mais peut échouer derrière des proxys/firewalls stricts.'; -} diff --git a/lib/l10n/app_localizations_it.dart b/lib/l10n/app_localizations_it.dart index e9f5bc9..e69de29 100644 --- a/lib/l10n/app_localizations_it.dart +++ b/lib/l10n/app_localizations_it.dart @@ -1,1204 +0,0 @@ -// ignore: unused_import -import 'package:intl/intl.dart' as intl; -import 'app_localizations.dart'; - -// ignore_for_file: type=lint - -/// The translations for Italian (`it`). -class AppLocalizationsIt extends AppLocalizations { - AppLocalizationsIt([String locale = 'it']) : super(locale); - - @override - String get appTitle => 'Conduit'; - - @override - String get retry => 'Riprova'; - - @override - String get back => 'Indietro'; - - @override - String get you => 'Tu'; - - @override - String get loadingProfile => 'Caricamento profilo...'; - - @override - String get unableToLoadProfile => 'Impossibile caricare il profilo'; - - @override - String get pleaseCheckConnection => 'Controlla la connessione e riprova'; - - @override - String get connectionIssueTitle => 'Impossibile raggiungere il server'; - - @override - String get connectionIssueSubtitle => - 'Riconnettiti per continuare oppure esci per scegliere un server diverso.'; - - @override - String get account => 'Account'; - - @override - String get supportConduit => 'Sostieni Conduit'; - - @override - String get supportConduitSubtitle => - 'Mantieni Conduit indipendente finanziando lo sviluppo continuo.'; - - @override - String get githubSponsorsTitle => 'GitHub Sponsors'; - - @override - String get githubSponsorsSubtitle => - 'Diventa sponsor ricorrente per supportare la roadmap.'; - - @override - String get buyMeACoffeeTitle => 'Buy Me a Coffee'; - - @override - String get buyMeACoffeeSubtitle => - 'Fai una donazione una tantum per dire grazie.'; - - @override - String get signOut => 'Esci'; - - @override - String get endYourSession => 'Termina la sessione'; - - @override - String get defaultModel => 'Modello predefinito'; - - @override - String get autoSelect => 'Selezione automatica'; - - @override - String get loadingModels => 'Caricamento modelli...'; - - @override - String get failedToLoadModels => 'Impossibile caricare i modelli'; - - @override - String get availableModels => 'Modelli disponibili'; - - @override - String get modelCapabilityMultimodal => 'Multimodale'; - - @override - String get modelCapabilityReasoning => 'Ragionamento'; - - @override - String get noResults => 'Nessun risultato'; - - @override - String get searchModels => 'Cerca modelli...'; - - @override - String get errorMessage => 'Qualcosa è andato storto. Riprova.'; - - @override - String get closeButtonSemantic => 'Chiudi'; - - @override - String get loadingContent => 'Caricamento contenuto'; - - @override - String get loadingShort => 'Caricamento'; - - @override - String loadingAnnouncement(String message) { - return 'Caricamento: $message'; - } - - @override - String errorAnnouncement(String error) { - return 'Errore: $error'; - } - - @override - String errorAnnouncementWithSuggestion(String error, String suggestion) { - return 'Errore: $error. $suggestion'; - } - - @override - String successAnnouncement(String message) { - return 'Operazione riuscita: $message'; - } - - @override - String get noItems => 'Nessun elemento'; - - @override - String get noItemsToDisplay => 'Nessun elemento da visualizzare'; - - @override - String get knowledgeBase => 'Base di conoscenza'; - - @override - String get attachments => 'Allegati'; - - @override - String get takePhoto => 'Scatta una foto'; - - @override - String get document => 'Documento'; - - @override - String get backToServerSetup => 'Torna alla configurazione del server'; - - @override - String get connectedToServer => 'Connesso al server'; - - @override - String get signIn => 'Accedi'; - - @override - String get enterCredentials => - 'Inserisci le credenziali per accedere alle conversazioni IA'; - - @override - String get credentials => 'Credenziali'; - - @override - String get apiKey => 'Chiave API'; - - @override - String get usernameOrEmail => 'Username o e‑mail'; - - @override - String get password => 'Password'; - - @override - String get signInWithApiKey => 'Accedi con chiave API'; - - @override - String get connectToServer => 'Connetti al server'; - - @override - String get enterServerAddress => - 'Inserisci l\'indirizzo del server Open-WebUI per iniziare'; - - @override - String get serverUrl => 'URL del server'; - - @override - String get serverUrlHint => 'https://tuo-server.com'; - - @override - String get enterServerUrlSemantic => - 'Inserisci l\'URL o l\'indirizzo IP del server'; - - @override - String get headerName => 'Nome header'; - - @override - String get headerValue => 'Valore header'; - - @override - String get headerValueHint => 'api-key-123 o token Bearer'; - - @override - String get addHeader => 'Aggiungi header'; - - @override - String get maximumHeadersReached => 'Numero massimo raggiunto'; - - @override - String get removeHeader => 'Rimuovi header'; - - @override - String get connecting => 'Connessione in corso...'; - - @override - String get connectToServerButton => 'Connetti al server'; - - @override - String get demoModeActive => 'Modalità demo attiva'; - - @override - String get skipServerSetupTryDemo => - 'Salta configurazione server e prova la demo'; - - @override - String get enterDemo => 'Entra in demo'; - - @override - String get demoBadge => 'Demo'; - - @override - String get serverNotOpenWebUI => 'Questo non sembra un server Open-WebUI.'; - - @override - String get serverUrlEmpty => 'L\'URL del server non può essere vuoto'; - - @override - String get invalidUrlFormat => 'Formato URL non valido. Controlla l\'input.'; - - @override - String get onlyHttpHttps => 'Sono supportati solo i protocolli HTTP e HTTPS.'; - - @override - String get serverAddressRequired => - 'Indirizzo server richiesto (es. 192.168.1.10 o example.com).'; - - @override - String get portRange => 'La porta deve essere tra 1 e 65535.'; - - @override - String get invalidIpFormat => 'Formato IP non valido. Esempio: 192.168.1.10.'; - - @override - String get couldNotConnectGeneric => - 'Impossibile connettersi. Verifica l\'indirizzo e riprova.'; - - @override - String get weCouldntReachServer => - 'Impossibile raggiungere il server. Verifica connessione e stato del server.'; - - @override - String get connectionTimedOut => - 'Tempo scaduto. Il server potrebbe essere occupato o bloccato.'; - - @override - String get useHttpOrHttpsOnly => 'Usa solo http:// o https://.'; - - @override - String get loginFailed => 'Accesso non riuscito'; - - @override - String get invalidCredentials => - 'Nome utente o password non validi. Riprova.'; - - @override - String get serverRedirectingHttps => - 'Il server sta reindirizzando. Controlla la configurazione HTTPS.'; - - @override - String get unableToConnectServer => - 'Impossibile connettersi al server. Controlla la connessione.'; - - @override - String get requestTimedOut => 'Richiesta scaduta. Riprova.'; - - @override - String get genericSignInFailed => - 'Impossibile accedere. Controlla credenziali e server.'; - - @override - String get skip => 'Salta'; - - @override - String get next => 'Avanti'; - - @override - String get done => 'Fatto'; - - @override - String onboardStartTitle(String username) { - return 'Ciao, $username'; - } - - @override - String get onboardStartSubtitle => - 'Scegli un modello per iniziare. Tocca Nuova chat in qualsiasi momento.'; - - @override - String get onboardStartBullet1 => - 'Tocca il nome del modello in alto per cambiare'; - - @override - String get onboardStartBullet2 => 'Usa Nuova chat per azzerare il contesto'; - - @override - String get onboardAttachTitle => 'Aggiungi contesto'; - - @override - String get onboardAttachSubtitle => - 'Collega le risposte a Workspace o alle foto.'; - - @override - String get onboardAttachBullet1 => 'Workspace: PDF, documenti, dataset'; - - @override - String get onboardAttachBullet2 => 'Foto: fotocamera o libreria'; - - @override - String get onboardSpeakTitle => 'Parla in modo naturale'; - - @override - String get onboardSpeakSubtitle => - 'Tocca il microfono per dettare con feedback visivo.'; - - @override - String get onboardSpeakBullet1 => - 'Interrompi in qualsiasi momento; il testo parziale viene mantenuto'; - - @override - String get onboardSpeakBullet2 => 'Ottimo per note rapide o prompt lunghi'; - - @override - String get onboardQuickTitle => 'Azioni rapide'; - - @override - String get onboardQuickSubtitle => - 'Apri il menu per passare tra Chat, Workspace e Profilo.'; - - @override - String get onboardQuickBullet1 => - 'Tocca il menu per accedere a Chat, Workspace, Profilo'; - - @override - String get onboardQuickBullet2 => - 'Avvia Nuova chat o gestisci i modelli dalla barra'; - - @override - String get attachmentLabel => 'Allegato'; - - @override - String get tools => 'Strumenti'; - - @override - String get voiceInput => 'Input vocale'; - - @override - String get voice => 'Voce'; - - @override - String get voiceStatusListening => 'In ascolto…'; - - @override - String get voiceStatusRecording => 'Registrazione…'; - - @override - String get voiceHoldToTalk => 'Tieni premuto per parlare'; - - @override - String get voiceAutoSend => 'Invio automatico'; - - @override - String get voiceTranscript => 'Trascrizione'; - - @override - String get voicePromptSpeakNow => 'Parla ora…'; - - @override - String get voicePromptTapStart => 'Tocca \"Avvia\" per iniziare'; - - @override - String get voiceActionStop => 'Stop'; - - @override - String get voiceActionStart => 'Avvia'; - - @override - String get voiceCallTitle => 'Chiamata vocale'; - - @override - String get voiceCallPause => 'Pausa'; - - @override - String get voiceCallResume => 'Riprendi'; - - @override - String get voiceCallStop => 'Stop'; - - @override - String get voiceCallEnd => 'Termina chiamata'; - - @override - String get voiceCallReady => 'Pronto'; - - @override - String get voiceCallConnecting => 'Connessione...'; - - @override - String get voiceCallListening => 'In ascolto'; - - @override - String get voiceCallPaused => 'In pausa'; - - @override - String get voiceCallProcessing => 'Elaborazione...'; - - @override - String get voiceCallSpeaking => 'Sta parlando'; - - @override - String get voiceCallDisconnected => 'Disconnesso'; - - @override - String get voiceCallErrorHelp => - 'Controlla:\n• Sono state concesse le autorizzazioni del microfono\n• Il riconoscimento vocale è disponibile sul dispositivo\n• Sei connesso al server'; - - @override - String get messageInputLabel => 'Input messaggio'; - - @override - String get messageInputHint => 'Scrivi il tuo messaggio'; - - @override - String get messageHintText => 'Chiedi a Conduit'; - - @override - String get stopGenerating => 'Interrompi generazione'; - - @override - String get send => 'Invia'; - - @override - String get codeCopiedToClipboard => 'Codice copiato negli appunti.'; - - @override - String get sendMessage => 'Invia messaggio'; - - @override - String get file => 'File'; - - @override - String get chooseDifferentFile => 'Scegli un altro file'; - - @override - String get photo => 'Foto'; - - @override - String get camera => 'Fotocamera'; - - @override - String get apiUnavailable => 'Servizio API non disponibile'; - - @override - String get unableToLoadImage => 'Impossibile caricare l\'immagine'; - - @override - String notAnImageFile(String fileName) { - return 'Non è un file immagine: $fileName'; - } - - @override - String failedToLoadImage(String error) { - return 'Impossibile caricare l\'immagine: $error'; - } - - @override - String get invalidDataUrl => 'Formato data URL non valido'; - - @override - String get failedToDecodeImage => 'Impossibile decodificare l\'immagine'; - - @override - String get invalidImageFormat => 'Formato immagine non valido'; - - @override - String get emptyImageData => 'Dati immagine vuoti'; - - @override - String get confirm => 'Conferma'; - - @override - String get continueAction => 'Continua'; - - @override - String get cancel => 'Annulla'; - - @override - String get ok => 'OK'; - - @override - String get previousLabel => 'Precedente'; - - @override - String get nextLabel => 'Successivo'; - - @override - String get inputField => 'Campo di input'; - - @override - String get checkConnection => 'Controlla connessione'; - - @override - String get openSettings => 'Apri impostazioni'; - - @override - String get goBack => 'Indietro'; - - @override - String get technicalDetails => 'Dettagli tecnici'; - - @override - String requiredFieldLabel(String label) { - return '$label *'; - } - - @override - String get requiredFieldHelper => 'Campo obbligatorio'; - - @override - String get switchOnLabel => 'Attivo'; - - @override - String get switchOffLabel => 'Disattivo'; - - @override - String dialogSemanticLabel(String title) { - return 'Dialogo: $title'; - } - - @override - String get save => 'Salva'; - - @override - String get chooseModel => 'Scegli modello'; - - @override - String get reviewerMode => 'REVIEWER MODE'; - - @override - String get selectLanguage => 'Seleziona lingua'; - - @override - String get newFolder => 'Nuova cartella'; - - @override - String get folderName => 'Nome cartella'; - - @override - String get newChat => 'Nuova chat'; - - @override - String get more => 'Altro'; - - @override - String get clear => 'Pulisci'; - - @override - String get searchConversations => 'Cerca conversazioni...'; - - @override - String get create => 'Crea'; - - @override - String get failedToCreateFolder => 'Impossibile creare la cartella'; - - @override - String get failedToMoveChat => 'Impossibile spostare la chat'; - - @override - String get failedToLoadChats => 'Impossibile caricare le chat'; - - @override - String get failedToUpdatePin => 'Impossibile aggiornare il pin'; - - @override - String get failedToDeleteChat => 'Impossibile eliminare la chat'; - - @override - String get manage => 'Gestisci'; - - @override - String get rename => 'Rinomina'; - - @override - String get delete => 'Elimina'; - - @override - String get renameChat => 'Rinomina chat'; - - @override - String get enterChatName => 'Inserisci nome chat'; - - @override - String get failedToRenameChat => 'Impossibile rinominare la chat'; - - @override - String get failedToUpdateArchive => 'Impossibile aggiornare l\'archivio'; - - @override - String get unarchive => 'Ripristina'; - - @override - String get archive => 'Archivia'; - - @override - String get pin => 'Fissa'; - - @override - String get unpin => 'Sblocca'; - - @override - String get recent => 'Recenti'; - - @override - String get system => 'Sistema'; - - @override - String get english => 'Inglese'; - - @override - String get deutsch => 'Tedesco'; - - @override - String get francais => 'Francese'; - - @override - String get italiano => 'Italiano'; - - @override - String get espanol => 'Spagnolo'; - - @override - String get nederlands => 'Olandese'; - - @override - String get russian => 'Russo'; - - @override - String get chinese => 'Cinese'; - - @override - String get korean => 'Coreano'; - - @override - String get deleteMessagesTitle => 'Elimina messaggi'; - - @override - String deleteMessagesMessage(int count) { - return 'Eliminare $count messaggi?'; - } - - @override - String routeNotFound(String routeName) { - return 'Percorso non trovato: $routeName'; - } - - @override - String get deleteChatTitle => 'Elimina chat'; - - @override - String get deleteChatMessage => - 'Questa chat verrà eliminata definitivamente.'; - - @override - String get deleteFolderTitle => 'Elimina cartella'; - - @override - String get deleteFolderMessage => - 'Questa cartella e le sue associazioni verranno rimosse.'; - - @override - String get failedToDeleteFolder => 'Impossibile eliminare la cartella'; - - @override - String get aboutApp => 'Informazioni'; - - @override - String get aboutAppSubtitle => 'Informazioni e link di Conduit'; - - @override - String get web => 'Web'; - - @override - String get imageGen => 'Gen. immagini'; - - @override - String get pinned => 'Fissati'; - - @override - String get folders => 'Cartelle'; - - @override - String get archived => 'Archiviati'; - - @override - String get appLanguage => 'Lingua app'; - - @override - String get darkMode => 'Modalità scura'; - - @override - String get webSearch => 'Ricerca Web'; - - @override - String get webSearchDescription => 'Cerca sul web e cita le fonti.'; - - @override - String get imageGeneration => 'Generazione immagini'; - - @override - String get imageGenerationDescription => 'Crea immagini dai tuoi prompt.'; - - @override - String get copy => 'Copia'; - - @override - String get ttsListen => 'Ascolta'; - - @override - String get ttsStop => 'Interrompi'; - - @override - String get edit => 'Modifica'; - - @override - String get regenerate => 'Rigenera'; - - @override - String get noConversationsYet => 'Ancora nessuna conversazione'; - - @override - String get usernameOrEmailHint => 'Inserisci il tuo username o e‑mail'; - - @override - String get passwordHint => 'Inserisci la password'; - - @override - String get enterApiKey => 'Inserisci la tua chiave API'; - - @override - String get signingIn => 'Accesso in corso...'; - - @override - String get advancedSettings => 'Impostazioni avanzate'; - - @override - String get customHeaders => 'Header personalizzati'; - - @override - String get customHeadersDescription => - 'Aggiungi header HTTP personalizzati per autenticazione, chiavi API o requisiti speciali del server.'; - - @override - String get allowSelfSignedCertificates => - 'Considera attendibili i certificati autofirmati'; - - @override - String get allowSelfSignedCertificatesDescription => - 'Accetta il certificato TLS di questo server anche se è autofirmato. Attiva questa opzione solo per server di cui ti fidi.'; - - @override - String get headerNameEmpty => 'Il nome header non può essere vuoto'; - - @override - String get headerNameTooLong => 'Nome header troppo lungo (max 64 caratteri)'; - - @override - String get headerNameInvalidChars => - 'Nome header non valido. Usa solo lettere, numeri e questi simboli: !#\$&-^_`|~'; - - @override - String headerNameReserved(String key) { - return 'Impossibile sovrascrivere l\'header riservato \"$key\"'; - } - - @override - String get headerValueEmpty => 'Il valore dell\'header non può essere vuoto'; - - @override - String get headerValueTooLong => - 'Valore header troppo lungo (max 1024 caratteri)'; - - @override - String get headerValueInvalidChars => - 'Il valore dell\'header contiene caratteri non validi. Usa solo ASCII stampabile.'; - - @override - String get headerValueUnsafe => - 'Il valore dell\'header sembra contenere contenuti potenzialmente non sicuri'; - - @override - String headerAlreadyExists(String key) { - return 'L\'header \"$key\" esiste già. Rimuovilo prima per aggiornarlo.'; - } - - @override - String get maxHeadersReachedDetail => - 'Massimo 10 header personalizzati consentiti. Rimuovine alcuni per aggiungerne altri.'; - - @override - String get noModelsAvailable => 'Nessun modello disponibile'; - - @override - String followingSystem(String theme) { - return 'Segue il sistema: $theme'; - } - - @override - String get themeDark => 'Scuro'; - - @override - String get themePalette => 'Palette di colori'; - - @override - String get themePaletteConduitLabel => 'Conduit'; - - @override - String get themePaletteConduitDescription => - 'Tema neutro e pulito progettato per Conduit.'; - - @override - String get themePaletteClaudeLabel => 'Claude'; - - @override - String get themePaletteClaudeDescription => - 'Palette calda e tattile ispirata al client web Claude.'; - - @override - String get themePaletteT3ChatLabel => 'T3 Chat'; - - @override - String get themePaletteT3ChatDescription => - 'Sfumature vivaci ispirate al brand T3 Stack.'; - - @override - String get themePaletteCatppuccinLabel => 'Catppuccin'; - - @override - String get themePaletteCatppuccinDescription => - 'Palette morbida di tonalità pastello.'; - - @override - String get themePaletteTangerineLabel => 'Tangerine'; - - @override - String get themePaletteTangerineDescription => - 'Palette calda arancione e ardesia.'; - - @override - String get themeLight => 'Chiaro'; - - @override - String get currentlyUsingDarkTheme => 'Attualmente tema scuro'; - - @override - String get currentlyUsingLightTheme => 'Attualmente tema chiaro'; - - @override - String get aboutConduit => 'Informazioni su Conduit'; - - @override - String versionLabel(String version, String build) { - return 'Versione: $version ($build)'; - } - - @override - String get githubRepository => 'Repository GitHub'; - - @override - String get unableToLoadAppInfo => - 'Impossibile caricare le informazioni dell\'app'; - - @override - String get thinking => 'Sta pensando…'; - - @override - String get thoughts => 'Pensieri'; - - @override - String thoughtForDuration(String duration) { - return 'Ha pensato per $duration'; - } - - @override - String get appCustomization => 'Personalizzazione'; - - @override - String get appCustomizationSubtitle => 'Tema, lingua, voce e quickpills'; - - @override - String get quickActionsDescription => 'Scorciatoie nella chat'; - - @override - String quickActionsSelectedCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count azioni selezionate', - one: '$count azione selezionata', - zero: 'Nessuna azione selezionata', - ); - return '$_temp0'; - } - - @override - String get autoSelectDescription => - 'Lascia che l\'app scelga il modello migliore'; - - @override - String get chatSettings => 'Chat'; - - @override - String get sendOnEnter => 'Invia con Invio'; - - @override - String get sendOnEnterDescription => - 'Invio invia (tastiera software). Cmd/Ctrl+Invio disponibile'; - - @override - String get sttSettings => 'Voce in testo'; - - @override - String get sttEngineLabel => 'Motore di riconoscimento'; - - @override - String get sttEngineAuto => 'Automatico'; - - @override - String get sttEngineDevice => 'Sul dispositivo'; - - @override - String get sttEngineServer => 'Server'; - - @override - String get sttEngineAutoDescription => - 'Usa il riconoscimento sul dispositivo quando disponibile e altrimenti passa al tuo server.'; - - @override - String get sttEngineDeviceDescription => - 'Mantiene l’audio su questo dispositivo. L’input vocale non funziona se il dispositivo non supporta il riconoscimento vocale.'; - - @override - String get sttEngineServerDescription => - 'Invia sempre le registrazioni al tuo server OpenWebUI per la trascrizione.'; - - @override - String get sttDeviceUnavailableWarning => - 'Il riconoscimento vocale sul dispositivo non è disponibile su questo dispositivo.'; - - @override - String get sttServerUnavailableWarning => - 'Collegati a un server con la trascrizione abilitata per usare questa opzione.'; - - @override - String get sttSilenceDuration => 'Durata del silenzio'; - - @override - String get sttSilenceDurationDescription => - 'Tempo di attesa dopo il silenzio prima di fermare automaticamente la registrazione'; - - @override - String get ttsEngineLabel => 'Motore'; - - @override - String get ttsEngineAuto => 'Automatico'; - - @override - String get ttsEngineDevice => 'Sul dispositivo'; - - @override - String get ttsEngineServer => 'Server'; - - @override - String get ttsEngineAutoDescription => - 'Usa la sintesi sul dispositivo quando disponibile e altrimenti passa al tuo server.'; - - @override - String get ttsEngineDeviceDescription => - 'Mantiene la sintesi su questo dispositivo. La riproduzione vocale non funziona se il dispositivo non supporta il TTS.'; - - @override - String get ttsEngineServerDescription => - 'Richiede sempre l\'audio dal tuo server OpenWebUI.'; - - @override - String get ttsDeviceUnavailableWarning => - 'La sintesi vocale sul dispositivo non è disponibile su questo dispositivo.'; - - @override - String get ttsServerUnavailableWarning => - 'Collegati a un server con la sintesi vocale abilitata per usare questa opzione.'; - - @override - String get ttsSettings => 'Sintesi vocale'; - - @override - String get ttsVoice => 'Voce'; - - @override - String get ttsSpeechRate => 'Velocità di sintesi vocale'; - - @override - String get ttsPitch => 'Tonalità'; - - @override - String get ttsVolume => 'Volume'; - - @override - String get ttsPreview => 'Anteprima voce'; - - @override - String get ttsSystemDefault => 'Predefinito del sistema'; - - @override - String get ttsSelectVoice => 'Seleziona voce'; - - @override - String get ttsPreviewText => 'Questa è un\'anteprima della voce selezionata.'; - - @override - String get ttsNoVoicesAvailable => 'Nessuna voce disponibile'; - - @override - String ttsVoicesForLanguage(String language) { - return 'Voci $language'; - } - - @override - String get ttsOtherVoices => 'Altre lingue'; - - @override - String get error => 'Errore'; - - @override - String errorWithMessage(String message) { - return 'Errore: $message'; - } - - @override - String get networkTimeoutError => - 'Connessione scaduta. Controlla la tua connessione Internet e riprova.'; - - @override - String get networkUnreachableError => - 'Impossibile raggiungere il server. Controlla l\'URL del server e la connessione Internet.'; - - @override - String get networkServerNotResponding => - 'Il server non risponde. Verifica che sia attivo e raggiungibile.'; - - @override - String get networkGenericError => - 'Problema di connessione di rete. Controlla la connessione Internet.'; - - @override - String get serverError500 => - 'Il server sta avendo problemi. Di solito è temporaneo.'; - - @override - String get serverErrorUnavailable => - 'Il server è temporaneamente non disponibile. Riprova tra poco.'; - - @override - String get serverErrorTimeout => - 'Il server ha impiegato troppo tempo a rispondere. Riprova.'; - - @override - String get serverErrorGeneric => - 'Il server è in difficoltà. Riprova più tardi.'; - - @override - String get authSessionExpired => 'La sessione è scaduta. Accedi di nuovo.'; - - @override - String get authForbidden => - 'Non hai l\'autorizzazione per eseguire questa azione.'; - - @override - String get authInvalidToken => - 'Il token di autenticazione non è valido. Accedi di nuovo.'; - - @override - String get authGenericError => 'Problema di autenticazione. Accedi di nuovo.'; - - @override - String get validationInvalidEmail => 'Inserisci un indirizzo email valido.'; - - @override - String get validationWeakPassword => - 'La password non soddisfa i requisiti. Controllala e riprova.'; - - @override - String get validationMissingRequired => 'Compila tutti i campi obbligatori.'; - - @override - String get validationFormatError => - 'Alcune informazioni non sono nel formato corretto. Controllale e riprova.'; - - @override - String get validationGenericError => 'Controlla i dati inseriti e riprova.'; - - @override - String get fileNotFound => - 'File non trovato. Potrebbe essere stato spostato o eliminato.'; - - @override - String get fileAccessDenied => - 'Impossibile accedere al file. Controlla i permessi.'; - - @override - String get fileTooLarge => - 'Il file è troppo grande. Scegline uno più piccolo.'; - - @override - String get fileGenericError => - 'Problema con il file. Prova con un file diverso.'; - - @override - String get permissionCameraRequired => - 'È necessario il permesso della fotocamera. Attivalo nelle impostazioni.'; - - @override - String get permissionStorageRequired => - 'È necessario il permesso di archiviazione. Attivalo nelle impostazioni.'; - - @override - String get permissionMicrophoneRequired => - 'È necessario il permesso del microfono. Attivalo nelle impostazioni.'; - - @override - String get permissionGenericError => - 'È necessaria un\'autorizzazione. Controlla i permessi dell\'app nelle impostazioni.'; - - @override - String get actionRetryRequest => 'Riprova la richiesta.'; - - @override - String get actionVerifyConnection => 'Verifica la connessione a Internet.'; - - @override - String get actionRetryOperation => 'Riprova l\'operazione.'; - - @override - String get actionRetryAfterDelay => 'Attendi un momento e riprova.'; - - @override - String get actionSignInToAccount => 'Accedi al tuo account.'; - - @override - String get actionSelectAnotherFile => 'Seleziona un altro file.'; - - @override - String get actionOpenAppSettings => - 'Apri le impostazioni dell\'app per concedere i permessi.'; - - @override - String get actionRetryAfterPermission => - 'Riprova dopo aver concesso il permesso.'; - - @override - String get actionReturnToPrevious => 'Torna alla schermata precedente.'; - - @override - String get display => 'Schermo'; - - @override - String get realtime => 'Tempo reale'; - - @override - String get transportMode => 'Modalità di trasporto'; - - @override - String get mode => 'Modalità'; - - @override - String get transportModePolling => 'Polling di fallback'; - - @override - String get transportModeWs => 'Solo WebSocket'; - - @override - String get transportModePollingInfo => - 'Quando WebSocket è bloccato passa a HTTP polling. Torna a WebSocket appena possibile.'; - - @override - String get transportModeWsInfo => - 'Minore overhead, ma può fallire dietro proxy/firewall restrittivi.'; -} diff --git a/lib/l10n/app_zh_Hant.arb b/lib/l10n/app_zh_Hant.arb new file mode 100644 index 0000000..e039957 --- /dev/null +++ b/lib/l10n/app_zh_Hant.arb @@ -0,0 +1,754 @@ +{ + "@@locale": "zh_Hant", + "appTitle": "Conduit", + "retry": "重試", + "back": "返回", + "you": "你", + "loadingProfile": "加載個人資料中...", + "unableToLoadProfile": "無法加載個人資料", + "pleaseCheckConnection": "請檢查您的連接並重試", + "connectionIssueTitle": "無法連接到您的服務器", + "@connectionIssueTitle": { + "description": "当配置的服务器无法访问时显示的标题" + }, + "connectionIssueSubtitle": "重新連接以繼續或退出登錄以選擇其他服務器。", + "@connectionIssueSubtitle": { + "description": "当无法访问服务器时解释可用操作的副标题" + }, + "account": "賬戶", + "supportConduit": "支持 Conduit", + "supportConduitSubtitle": "通過資助持續開發來保持 Conduit 的獨立性。", + "githubSponsorsTitle": "GitHub 贊助", + "githubSponsorsSubtitle": "成爲定期贊助者以資助路線圖項目。", + "buyMeACoffeeTitle": "Buy Me a Coffee", + "buyMeACoffeeSubtitle": "一次性捐贈以表達感謝。", + "signOut": "退出登錄", + "endYourSession": "結束您的會話", + "defaultModel": "默認模型", + "autoSelect": "自動選擇", + "loadingModels": "加載模型中...", + "failedToLoadModels": "無法加載模型", + "availableModels": "可用模型", + "noResults": "無結果", + "searchModels": "搜索模型...", + "errorMessage": "出了點問題。請重試。", + "closeButtonSemantic": "關閉", + "loadingContent": "加載內容中", + "noItems": "無項目", + "noItemsToDisplay": "無可顯示的項目", + "knowledgeBase": "知識庫", + "attachments": "附件", + "takePhoto": "拍照", + "document": "文檔", + "backToServerSetup": "返回服務器設置", + "connectedToServer": "已連接到服務器", + "signIn": "登錄", + "enterCredentials": "輸入您的憑據以訪問您的 AI 對話", + "credentials": "憑據", + "apiKey": "API 密鑰", + "usernameOrEmail": "用戶名或電子郵件", + "password": "密碼", + "signInWithApiKey": "使用 API 密鑰登錄", + "connectToServer": "連接到服務器", + "enterServerAddress": "輸入您的 Open-WebUI 服務器地址以開始", + "serverUrl": "服務器 URL", + "serverUrlHint": "https://your-server.com", + "enterServerUrlSemantic": "輸入您的服務器 URL 或 IP 地址", + "headerName": "標頭名稱", + "headerValue": "標頭值", + "headerValueHint": "api-key-123 或 Bearer token", + "addHeader": "添加標頭", + "maximumHeadersReached": "已達到最大標頭數", + "removeHeader": "刪除標頭", + "connecting": "連接中...", + "connectToServerButton": "連接到服務器", + "demoModeActive": "演示模式已激活", + "skipServerSetupTryDemo": "跳過服務器設置並嘗試演示", + "enterDemo": "進入演示", + "demoBadge": "演示", + "serverNotOpenWebUI": "這似乎不是 Open-WebUI 服務器。", + "serverUrlEmpty": "服務器 URL 不能爲空", + "invalidUrlFormat": "無效的 URL 格式。請檢查您的輸入。", + "onlyHttpHttps": "僅支持 HTTP 和 HTTPS 協議。", + "serverAddressRequired": "需要服務器地址(例如 192.168.1.10 或 example.com)。", + "portRange": "端口必須在 1 到 65535 之間。", + "invalidIpFormat": "無效的 IP 地址格式。使用如 192.168.1.10 的格式。", + "couldNotConnectGeneric": "無法連接。請仔細檢查地址並重試。", + "weCouldntReachServer": "我們無法訪問服務器。請檢查您的連接和服務器是否正在運行。", + "connectionTimedOut": "連接超時。服務器可能很忙或被防火牆阻止。", + "useHttpOrHttpsOnly": "僅使用 http:// 或 https://。", + "loginFailed": "登錄失敗", + "invalidCredentials": "無效的用戶名或密碼。請重試。", + "serverRedirectingHttps": "服務器正在重定向請求。請檢查您的服務器的 HTTPS 配置。", + "unableToConnectServer": "無法連接到服務器。請檢查您的連接。", + "requestTimedOut": "請求超時。請重試。", + "genericSignInFailed": "我們無法讓您登錄。請檢查您的憑據和服務器設置。", + "skip": "跳過", + "next": "下一步", + "done": "完成", + "onboardStartTitle": "你好,{username}", + "onboardStartSubtitle": "選擇一個模型以開始。隨時點擊新對話。", + "onboardStartBullet1": "點擊頂部欄中的模型名稱以切換模型", + "onboardStartBullet2": "使用新對話重置上下文", + "onboardAttachTitle": "添加上下文", + "onboardAttachSubtitle": "使用工作區或照片中的內容來支持回覆。", + "onboardAttachBullet1": "工作區:PDF、文檔、數據集", + "onboardAttachBullet2": "照片:相機或相冊", + "onboardSpeakTitle": "自然說話", + "onboardSpeakSubtitle": "點擊麥克風以實時波形反饋聽寫。", + "onboardSpeakBullet1": "隨時停止;部分文本會保留", + "onboardSpeakBullet2": "非常適合快速筆記或長提示", + "onboardQuickTitle": "快速操作", + "onboardQuickSubtitle": "打開菜單在對話、工作區和個人資料之間切換。", + "onboardQuickBullet1": "點擊菜單訪問對話、工作區、個人資料", + "onboardQuickBullet2": "從頂部欄開始新對話或管理模型", + "attachmentLabel": "附件", + "tools": "工具", + "voiceInput": "語音輸入", + "voice": "語音", + "voiceStatusListening": "正在聽...", + "voiceStatusRecording": "正在錄製...", + "voiceHoldToTalk": "按住說話", + "voiceAutoSend": "自動發送", + "voiceTranscript": "轉錄", + "voicePromptSpeakNow": "現在說話...", + "voicePromptTapStart": "點擊開始以開始", + "voiceActionStop": "停止", + "voiceActionStart": "開始", + "messageInputLabel": "消息輸入", + "messageInputHint": "輸入您的消息", + "messageHintText": "問 Conduit", + "stopGenerating": "停止生成", + "codeCopiedToClipboard": "代碼已複製到剪貼板。", + "send": "發送", + "sendMessage": "發送消息", + "file": "文件", + "photo": "照片", + "camera": "相機", + "apiUnavailable": "API 服務不可用", + "unableToLoadImage": "無法加載圖像", + "notAnImageFile": "不是圖像文件:{fileName}", + "failedToLoadImage": "無法加載圖像:{error}", + "invalidDataUrl": "無效的數據 URL 格式", + "failedToDecodeImage": "無法解碼圖像", + "invalidImageFormat": "無效的圖像格式", + "emptyImageData": "空圖像數據", + "confirm": "確認", + "cancel": "取消", + "ok": "確定", + "inputField": "輸入字段", + "checkConnection": "檢查連接", + "openSettings": "打開設置", + "goBack": "返回", + "technicalDetails": "技術詳情", + "save": "保存", + "chooseModel": "選擇模型", + "reviewerMode": "審覈者模式", + "selectLanguage": "選擇語言", + "newFolder": "新文件夾", + "folderName": "文件夾名稱", + "newChat": "新對話", + "more": "更多", + "clear": "清除", + "searchConversations": "搜索對話...", + "create": "創建", + "failedToCreateFolder": "無法創建文件夾", + "failedToMoveChat": "無法移動對話", + "failedToLoadChats": "無法加載對話", + "failedToUpdatePin": "無法更新置頂", + "failedToDeleteChat": "無法刪除對話", + "manage": "管理", + "rename": "重命名", + "delete": "刪除", + "renameChat": "重命名對話", + "enterChatName": "輸入對話名稱", + "failedToRenameChat": "無法重命名對話", + "failedToUpdateArchive": "無法更新存檔", + "unarchive": "取消存檔", + "archive": "存檔", + "pin": "置頂", + "unpin": "取消置頂", + "recent": "最近", + "system": "系統", + "english": "English", + "deutsch": "Deutsch", + "francais": "Français", + "italiano": "Italiano", + "espanol": "Español", + "nederlands": "Nederlands", + "russian": "Русский", + "chinese": "中文", + "korean": "한국어", + "deleteMessagesTitle": "刪除消息", + "deleteMessagesMessage": "刪除 {count} 條消息?", + "@deleteMessagesMessage": { + "placeholders": { + "count": { + "type": "int" + } + } + }, + "routeNotFound": "未找到路由:{routeName}", + "@routeNotFound": { + "placeholders": { + "routeName": { + "type": "String" + } + } + }, + "deleteChatTitle": "刪除對話", + "deleteChatMessage": "此對話將被永久刪除。", + "deleteFolderTitle": "刪除文件夾", + "deleteFolderMessage": "此文件夾及其分配引用將被刪除。", + "failedToDeleteFolder": "無法刪除文件夾", + "aboutApp": "關於", + "aboutAppSubtitle": "Conduit 信息和鏈接", + "web": "網頁", + "imageGen": "圖像生成", + "pinned": "已置頂", + "folders": "文件夾", + "archived": "已存檔", + "appLanguage": "應用語言", + "darkMode": "深色模式", + "webSearch": "網頁搜索", + "webSearchDescription": "搜索網頁並在回覆中引用來源。", + "imageGeneration": "圖像生成", + "imageGenerationDescription": "從您的提示創建圖像。", + "copy": "複製", + "ttsListen": "收聽", + "ttsStop": "停止", + "edit": "編輯", + "regenerate": "重新生成", + "noConversationsYet": "尚無對話", + "usernameOrEmailHint": "輸入您的用戶名或電子郵件", + "passwordHint": "輸入您的密碼", + "enterApiKey": "輸入您的 API 密鑰", + "signingIn": "正在登錄...", + "advancedSettings": "高級設置", + "customHeaders": "自定義標頭", + "customHeadersDescription": "爲身份驗證、API 密鑰或特殊服務器要求添加自定義 HTTP 標頭。", + "allowSelfSignedCertificates": "信任自簽名證書", + "@allowSelfSignedCertificates": { + "description": "允许信任配置服务器的自签名 TLS 证书的切换标签。" + }, + "allowSelfSignedCertificatesDescription": "接受此服務器的 TLS 證書,即使它是自簽名的。僅對您信任的服務器啓用。", + "@allowSelfSignedCertificatesDescription": { + "description": "阐明启用自签名证书切换风险的帮助文本。" + }, + "headerNameEmpty": "標頭名稱不能爲空", + "headerNameTooLong": "標頭名稱太長(最多 64 個字符)", + "headerNameInvalidChars": "無效的標頭名稱。僅使用字母、數字和這些符號:!#$&-^_`|~", + "headerNameReserved": "無法覆蓋保留的標頭「{key}」", + "@headerNameReserved": { + "placeholders": { + "key": { + "type": "String" + } + } + }, + "headerValueEmpty": "標頭值不能爲空", + "headerValueTooLong": "標頭值太長(最多 1024 個字符)", + "headerValueInvalidChars": "標頭值包含無效字符。僅使用可打印的 ASCII。", + "headerValueUnsafe": "標頭值似乎包含潛在的不安全內容", + "headerAlreadyExists": "標頭「{key}」已存在。首先刪除它以更新。", + "@headerAlreadyExists": { + "placeholders": { + "key": { + "type": "String" + } + } + }, + "maxHeadersReachedDetail": "最多允許 10 個自定義標頭。刪除一些以添加更多。", + "noModelsAvailable": "無可用模型", + "followingSystem": "跟隨系統:{theme}", + "@followingSystem": { + "placeholders": { + "theme": { + "type": "String" + } + } + }, + "themeDark": "深色", + "themePalette": "強調色調色板", + "@themePalette": { + "description": "选择应用颜色调色板的标题。" + }, + "themeLight": "淺色", + "currentlyUsingDarkTheme": "當前使用深色主題", + "currentlyUsingLightTheme": "當前使用淺色主題", + "aboutConduit": "關於 Conduit", + "versionLabel": "版本:{version}({build})", + "@versionLabel": { + "placeholders": { + "version": { + "type": "String" + }, + "build": { + "type": "String" + } + } + }, + "githubRepository": "GitHub 倉庫", + "unableToLoadAppInfo": "無法加載應用信息", + "thinking": "思考中...", + "thoughts": "思路", + "thoughtForDuration": "思考了 {duration}", + "@thoughtForDuration": { + "description": "显示助手在回复前思考了多长时间。", + "placeholders": { + "duration": { + "type": "String", + "example": "3s" + } + } + }, + "appCustomization": "自定義", + "appCustomizationSubtitle": "主題、語言、語音和 quickpills", + "quickActionsDescription": "聊天快捷方式", + "chatSettings": "對話", + "sendOnEnter": "回車發送", + "sendOnEnterDescription": "回車發送(軟鍵盤)。Cmd/Ctrl+Enter 也可用", + "sttSettings": "語音轉文字", + "sttEngineLabel": "識別引擎", + "sttEngineAuto": "自動", + "sttEngineDevice": "本機", + "sttEngineServer": "服務器", + "sttEngineAutoDescription": "在可用時使用本機識別,否則切換到你的服務器。", + "sttEngineDeviceDescription": "音頻會保留在此設備上。如果設備不支持語音識別,語音輸入將不可用。", + "sttEngineServerDescription": "始終將錄音發送到你的 OpenWebUI 服務器進行轉寫。", + "sttDeviceUnavailableWarning": "此設備不支持本機語音識別。", + "sttServerUnavailableWarning": "連接到啓用轉寫功能的服務器後才能使用此選項。", + "sttSilenceDuration": "靜音持續時間", + "sttSilenceDurationDescription": "檢測到靜音後等待多久自動停止錄音", + "ttsSettings": "文本轉語音", + "ttsEngineAuto": "自動", + "ttsEngineAutoDescription": "在可用時使用本機合成,否則切換到你的服務器。", + "ttsEngineDeviceDescription": "在此設備上完成合成。如果設備不支持文本轉語音,語音播放將不可用。", + "ttsEngineServerDescription": "始終向你的 OpenWebUI 服務器請求音頻。", + "ttsDeviceUnavailableWarning": "此設備不支持本機文本轉語音。", + "ttsServerUnavailableWarning": "連接到啓用文本轉語音的服務器後才能使用此選項。", + "ttsVoice": "語音", + "ttsSpeechRate": "語速", + "ttsPitch": "音調", + "ttsVolume": "音量", + "ttsPreview": "預覽語音", + "ttsSystemDefault": "系統默認", + "ttsSelectVoice": "選擇語音", + "ttsPreviewText": "這是所選語音的預覽。", + "ttsNoVoicesAvailable": "沒有可用的語音", + "ttsVoicesForLanguage": "{language} 語音", + "ttsOtherVoices": "其他語言", + "error": "錯誤", + "display": "顯示", + "realtime": "實時", + "transportMode": "傳輸模式", + "mode": "模式", + "transportModePolling": "輪詢回退", + "transportModeWs": "僅 WebSocket", + "transportModePollingInfo": "當 WebSocket 被阻止時改用 HTTP 輪詢,在條件允許時切換回 WebSocket。", + "transportModeWsInfo": "開銷較低,但可能在嚴格的代理/防火牆後失敗。", + "quickActionsSelectedCount": "{count, plural, =0{未選擇操作} other{已選擇{count}個操作}}", + "@quickActionsSelectedCount": { + "description": "Subtitle indicating how many quick actions are selected.", + "placeholders": { + "count": { + "type": "int", + "example": "2" + } + } + }, + "autoSelectDescription": "讓應用自動選擇最佳模型", + "@autoSelectDescription": { + "description": "Explains what the auto-select model setting does." + }, + "ttsEngineLabel": "引擎", + "@ttsEngineLabel": { + "description": "Label for selecting the text-to-speech engine." + }, + "ttsEngineDevice": "本機", + "@ttsEngineDevice": { + "description": "Chip label for using on-device text-to-speech." + }, + "ttsEngineServer": "服務器", + "@ttsEngineServer": { + "description": "Chip label for using server-side text-to-speech." + }, + "modelCapabilityMultimodal": "多模態", + "@modelCapabilityMultimodal": { + "description": "Capability chip label for models that support multimodal input." + }, + "modelCapabilityReasoning": "推理", + "@modelCapabilityReasoning": { + "description": "Capability chip label for models that support reasoning features." + }, + "voiceCallTitle": "語音通話", + "@voiceCallTitle": { + "description": "Title displayed on the voice call screen." + }, + "voiceCallPause": "暫停", + "@voiceCallPause": { + "description": "Button label to pause a voice call." + }, + "voiceCallResume": "繼續", + "@voiceCallResume": { + "description": "Button label to resume a paused voice call." + }, + "voiceCallStop": "停止", + "@voiceCallStop": { + "description": "Button label to stop the active voice call." + }, + "voiceCallEnd": "結束通話", + "@voiceCallEnd": { + "description": "Button label to end the voice call session." + }, + "chooseDifferentFile": "選擇其他文件", + "@chooseDifferentFile": { + "description": "Action label prompting the user to pick another file." + }, + "errorWithMessage": "錯誤:{message}", + "@errorWithMessage": { + "description": "Error label with appended message text.", + "placeholders": { + "message": { + "type": "String", + "example": "Network timeout" + } + } + }, + "networkTimeoutError": "連接超時。請檢查網絡後重試。", + "@networkTimeoutError": { + "description": "User-facing message when a network request times out." + }, + "networkUnreachableError": "無法連接服務器。請檢查服務器地址和網絡。", + "@networkUnreachableError": { + "description": "User-facing message when the server cannot be reached." + }, + "networkServerNotResponding": "服務器沒有響應。請確認服務器正在運行且可訪問。", + "@networkServerNotResponding": { + "description": "User-facing message when the server does not respond to a request." + }, + "networkGenericError": "網絡連接出現問題。請檢查網絡連接。", + "@networkGenericError": { + "description": "Fallback message for generic network errors." + }, + "serverError500": "服務器出現問題,通常是暫時的。", + "@serverError500": { + "description": "Message when a 500 error is encountered." + }, + "serverErrorUnavailable": "服務器暫時不可用。請稍後再試。", + "@serverErrorUnavailable": { + "description": "Message when a 502/503 error is encountered." + }, + "serverErrorTimeout": "服務器響應超時。請重試。", + "@serverErrorTimeout": { + "description": "Message when the server times out." + }, + "serverErrorGeneric": "服務器出現故障。請稍後再試。", + "@serverErrorGeneric": { + "description": "Fallback server error message." + }, + "authSessionExpired": "會話已過期,請重新登錄。", + "@authSessionExpired": { + "description": "Message when an authentication session expires." + }, + "authForbidden": "您沒有執行此操作的權限。", + "@authForbidden": { + "description": "Message when the user lacks required permissions." + }, + "authInvalidToken": "認證令牌無效,請重新登錄。", + "@authInvalidToken": { + "description": "Message when the authentication token is invalid." + }, + "authGenericError": "認證出現問題,請重新登錄。", + "@authGenericError": { + "description": "Fallback authentication error message." + }, + "validationInvalidEmail": "請輸入有效的郵箱地址。", + "@validationInvalidEmail": { + "description": "Validation message for invalid email input." + }, + "validationWeakPassword": "密碼不符合要求,請檢查後重試。", + "@validationWeakPassword": { + "description": "Validation message for weak passwords." + }, + "validationMissingRequired": "請填寫所有必填項。", + "@validationMissingRequired": { + "description": "Validation message when required fields are missing." + }, + "validationFormatError": "部分信息格式不正確,請檢查後重試。", + "@validationFormatError": { + "description": "Validation message for generic formatting issues." + }, + "validationGenericError": "請檢查輸入內容並重試。", + "@validationGenericError": { + "description": "Fallback validation message." + }, + "fileNotFound": "未找到文件,可能已移動或刪除。", + "@fileNotFound": { + "description": "Message when a file cannot be located." + }, + "fileAccessDenied": "無法訪問文件,請檢查權限。", + "@fileAccessDenied": { + "description": "Message when file access is denied." + }, + "fileTooLarge": "文件過大,請選擇較小的文件。", + "@fileTooLarge": { + "description": "Message when a file exceeds size limits." + }, + "fileGenericError": "文件出現問題,請嘗試其他文件。", + "@fileGenericError": { + "description": "Fallback file error message." + }, + "permissionCameraRequired": "需要相機權限,請在設置中開啓。", + "@permissionCameraRequired": { + "description": "Message when camera permission is missing." + }, + "permissionStorageRequired": "需要存儲權限,請在設置中開啓。", + "@permissionStorageRequired": { + "description": "Message when storage permission is missing." + }, + "permissionMicrophoneRequired": "需要麥克風權限,請在設置中開啓。", + "@permissionMicrophoneRequired": { + "description": "Message when microphone permission is missing." + }, + "permissionGenericError": "需要權限,請在設置中檢查應用權限。", + "@permissionGenericError": { + "description": "Fallback permission error message." + }, + "actionRetryRequest": "請再次嘗試該請求。", + "@actionRetryRequest": { + "description": "Description for retrying a failed request." + }, + "actionVerifyConnection": "請檢查網絡連接。", + "@actionVerifyConnection": { + "description": "Description for checking internet connectivity." + }, + "actionRetryOperation": "請重試此操作。", + "@actionRetryOperation": { + "description": "Description for retrying the same operation." + }, + "actionRetryAfterDelay": "稍等片刻再試一次。", + "@actionRetryAfterDelay": { + "description": "Description suggesting a short delay before retrying." + }, + "actionSignInToAccount": "登錄到您的賬戶。", + "@actionSignInToAccount": { + "description": "Description for signing back into the app." + }, + "actionSelectAnotherFile": "請選擇其他文件。", + "@actionSelectAnotherFile": { + "description": "Description for choosing a different file." + }, + "actionOpenAppSettings": "打開應用設置以授予權限。", + "@actionOpenAppSettings": { + "description": "Description for opening system or app settings." + }, + "actionRetryAfterPermission": "授予權限後請重試。", + "@actionRetryAfterPermission": { + "description": "Description for retrying once permissions are granted." + }, + "actionReturnToPrevious": "返回上一屏。", + "@actionReturnToPrevious": { + "description": "Description for navigating back to the prior screen." + }, + "continueAction": "繼續", + "@continueAction": { + "description": "Button label to continue an action or flow." + }, + "loadingShort": "加載中", + "@loadingShort": { + "description": "Short loading label used for accessibility." + }, + "loadingAnnouncement": "正在加載:{message}", + "@loadingAnnouncement": { + "description": "Screen reader announcement when loading a resource.", + "placeholders": { + "message": { + "type": "String", + "example": "Messages" + } + } + }, + "errorAnnouncement": "錯誤:{error}", + "@errorAnnouncement": { + "description": "Screen reader announcement for an error.", + "placeholders": { + "error": { + "type": "String", + "example": "Network timeout" + } + } + }, + "errorAnnouncementWithSuggestion": "錯誤:{error}。{suggestion}", + "@errorAnnouncementWithSuggestion": { + "description": "Screen reader announcement for an error with a follow-up suggestion.", + "placeholders": { + "error": { + "type": "String", + "example": "Network timeout" + }, + "suggestion": { + "type": "String", + "example": "Please try again later." + } + } + }, + "successAnnouncement": "成功:{message}", + "@successAnnouncement": { + "description": "Screen reader announcement for successful actions.", + "placeholders": { + "message": { + "type": "String", + "example": "Profile updated" + } + } + }, + "requiredFieldLabel": "{label} *", + "@requiredFieldLabel": { + "description": "Label text indicating a required field.", + "placeholders": { + "label": { + "type": "String", + "example": "Email" + } + } + }, + "requiredFieldHelper": "必填項", + "@requiredFieldHelper": { + "description": "Helper text indicating that the field is required." + }, + "switchOnLabel": "開啓", + "@switchOnLabel": { + "description": "Semantic label when a switch is enabled." + }, + "switchOffLabel": "關閉", + "@switchOffLabel": { + "description": "Semantic label when a switch is disabled." + }, + "dialogSemanticLabel": "對話框:{title}", + "@dialogSemanticLabel": { + "description": "Semantic label describing the dialog title.", + "placeholders": { + "title": { + "type": "String", + "example": "Settings" + } + } + }, + "previousLabel": "上一步", + "@previousLabel": { + "description": "Label for navigating to the previous item." + }, + "nextLabel": "下一步", + "@nextLabel": { + "description": "Label for navigating to the next item." + }, + "themePaletteConduitLabel": "Conduit", + "@themePaletteConduitLabel": { + "description": "Palette name for the default Conduit theme." + }, + "themePaletteConduitDescription": "爲 Conduit 設計的簡潔中性色主題。", + "@themePaletteConduitDescription": { + "description": "Description of the Conduit palette." + }, + "themePaletteClaudeLabel": "Claude", + "@themePaletteClaudeLabel": { + "description": "Palette name inspired by the Claude web client." + }, + "themePaletteClaudeDescription": "源自 Claude 網頁端的溫暖觸感配色。", + "@themePaletteClaudeDescription": { + "description": "Description of the Claude palette." + }, + "themePaletteT3ChatLabel": "T3 Chat", + "@themePaletteT3ChatLabel": { + "description": "Palette name inspired by the T3 Stack brand." + }, + "themePaletteT3ChatDescription": "靈感來自 T3 Stack 品牌的活潑漸變。", + "@themePaletteT3ChatDescription": { + "description": "Description of the T3 Chat palette." + }, + "themePaletteCatppuccinLabel": "Catppuccin", + "@themePaletteCatppuccinLabel": { + "description": "Palette name for Catppuccin colors." + }, + "themePaletteCatppuccinDescription": "柔和的馬卡龍色調。", + "@themePaletteCatppuccinDescription": { + "description": "Description of the Catppuccin palette." + }, + "themePaletteTangerineLabel": "Tangerine", + "@themePaletteTangerineLabel": { + "description": "Palette name for Tangerine colors." + }, + "themePaletteTangerineDescription": "溫暖的橙色與石板色調。", + "@themePaletteTangerineDescription": { + "description": "Description of the Tangerine palette." + }, + "@onboardStartTitle": { + "description": "Onboarding card: start chatting title.", + "placeholders": { + "username": { + "type": "String", + "example": "Alex" + } + } + }, + "@notAnImageFile": { + "description": "Error when a referenced file is not an image.", + "placeholders": { + "fileName": { + "type": "String", + "example": "image.txt" + } + } + }, + "@failedToLoadImage": { + "description": "Error including the underlying reason when image loading fails.", + "placeholders": { + "error": { + "type": "String", + "example": "Network error" + } + } + }, + "@ttsVoicesForLanguage": { + "description": "Section header for voices matching the app language", + "placeholders": { + "language": { + "type": "String", + "example": "EN" + } + } + }, + "voiceCallReady": "已就緒", + "@voiceCallReady": { + "description": "Status label shown when the voice call is ready to start." + }, + "voiceCallConnecting": "正在連接...", + "@voiceCallConnecting": { + "description": "Status label shown while the voice call is connecting." + }, + "voiceCallListening": "正在聆聽", + "@voiceCallListening": { + "description": "Status label shown while the call is listening for input." + }, + "voiceCallPaused": "已暫停", + "@voiceCallPaused": { + "description": "Status label shown when the call is paused." + }, + "voiceCallProcessing": "正在思考...", + "@voiceCallProcessing": { + "description": "Status label shown while the call processes a response." + }, + "voiceCallSpeaking": "正在講話", + "@voiceCallSpeaking": { + "description": "Status label shown while the assistant is speaking." + }, + "voiceCallDisconnected": "已斷開", + "@voiceCallDisconnected": { + "description": "Status label shown when the voice call has ended or disconnected." + }, + "voiceCallErrorHelp": "請檢查:\n• 已授予麥克風權限\n• 設備支持語音識別\n• 已連接到服務器", + "@voiceCallErrorHelp": { + "description": "Guidance shown when the voice call encounters an error." + } +}