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'; // 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('de'), Locale('en'), ]; /// App-bar title in the OS task switcher. /// /// In en, this message translates to: /// **'F∆I Studio'** String get appTitle; /// No description provided for @navDoctor. /// /// In en, this message translates to: /// **'Doctor'** String get navDoctor; /// No description provided for @navModules. /// /// In en, this message translates to: /// **'Modules'** String get navModules; /// No description provided for @navStore. /// /// In en, this message translates to: /// **'Store'** String get navStore; /// No description provided for @navFlows. /// /// In en, this message translates to: /// **'Flows'** String get navFlows; /// No description provided for @navAudit. /// /// In en, this message translates to: /// **'Audit'** String get navAudit; /// No description provided for @navApprovals. /// /// In en, this message translates to: /// **'Approvals'** String get navApprovals; /// No description provided for @connectionConnected. /// /// In en, this message translates to: /// **'connected'** String get connectionConnected; /// No description provided for @connectionUnreachable. /// /// In en, this message translates to: /// **'unreachable'** String get connectionUnreachable; /// No description provided for @connectionConnecting. /// /// In en, this message translates to: /// **'connecting…'** String get connectionConnecting; /// No description provided for @connectionStartHub. /// /// In en, this message translates to: /// **'Start hub'** String get connectionStartHub; /// No description provided for @buttonCancel. /// /// In en, this message translates to: /// **'Cancel'** String get buttonCancel; /// No description provided for @buttonSave. /// /// In en, this message translates to: /// **'Save'** String get buttonSave; /// No description provided for @buttonClose. /// /// In en, this message translates to: /// **'Close'** String get buttonClose; /// No description provided for @buttonRetry. /// /// In en, this message translates to: /// **'Retry'** String get buttonRetry; /// No description provided for @buttonRefresh. /// /// In en, this message translates to: /// **'Refresh'** String get buttonRefresh; /// No description provided for @buttonInstall. /// /// In en, this message translates to: /// **'Install'** String get buttonInstall; /// No description provided for @buttonUninstall. /// /// In en, this message translates to: /// **'Uninstall'** String get buttonUninstall; /// No description provided for @buttonDetails. /// /// In en, this message translates to: /// **'Details'** String get buttonDetails; /// No description provided for @buttonAdd. /// /// In en, this message translates to: /// **'Add'** String get buttonAdd; /// No description provided for @buttonRemove. /// /// In en, this message translates to: /// **'Remove'** String get buttonRemove; /// No description provided for @buttonOpen. /// /// In en, this message translates to: /// **'Open'** String get buttonOpen; /// No description provided for @buttonExplain. /// /// In en, this message translates to: /// **'Explain'** String get buttonExplain; /// No description provided for @buttonReadDocs. /// /// In en, this message translates to: /// **'Read docs'** String get buttonReadDocs; /// No description provided for @settingsTitle. /// /// In en, this message translates to: /// **'Hub endpoint'** String get settingsTitle; /// No description provided for @settingsHost. /// /// In en, this message translates to: /// **'Host'** String get settingsHost; /// No description provided for @settingsPort. /// /// In en, this message translates to: /// **'Port'** String get settingsPort; /// No description provided for @settingsTls. /// /// In en, this message translates to: /// **'TLS'** String get settingsTls; /// No description provided for @settingsSaveAndConnect. /// /// In en, this message translates to: /// **'Save & connect'** String get settingsSaveAndConnect; /// No description provided for @settingsLanguage. /// /// In en, this message translates to: /// **'Language'** String get settingsLanguage; /// No description provided for @settingsLanguageHint. /// /// In en, this message translates to: /// **'App language. Affects every page; bilingual store entries also flip via this toggle.'** String get settingsLanguageHint; /// No description provided for @channelsHeader. /// /// In en, this message translates to: /// **'CHANNELS'** String get channelsHeader; /// No description provided for @channelsActive. /// /// In en, this message translates to: /// **'active'** String get channelsActive; /// No description provided for @channelsRunning. /// /// In en, this message translates to: /// **'running'** String get channelsRunning; /// No description provided for @channelsStopped. /// /// In en, this message translates to: /// **'stopped'** String get channelsStopped; /// No description provided for @channelsConnect. /// /// In en, this message translates to: /// **'Connect Studio to this channel'** String get channelsConnect; /// No description provided for @channelsSwitch. /// /// In en, this message translates to: /// **'Make this the active channel'** String get channelsSwitch; /// No description provided for @channelsEnableAutostart. /// /// In en, this message translates to: /// **'Enable autostart at login'** String get channelsEnableAutostart; /// No description provided for @channelsDisableAutostart. /// /// In en, this message translates to: /// **'Disable autostart'** String get channelsDisableAutostart; /// No description provided for @storeSearchHint. /// /// In en, this message translates to: /// **'Search modules — name, tagline, tag, capability…'** String get storeSearchHint; /// No description provided for @storeFeatured. /// /// In en, this message translates to: /// **'FEATURED'** String get storeFeatured; /// No description provided for @storeFeaturedHint. /// /// In en, this message translates to: /// **'curated picks · click for details'** String get storeFeaturedHint; /// No description provided for @storeNoMatches. /// /// In en, this message translates to: /// **'No matches'** String get storeNoMatches; /// No description provided for @storeNoMatchesHint. /// /// In en, this message translates to: /// **'Adjust the filters or clear the search to see all entries.'** String get storeNoMatchesHint; /// No description provided for @storeClearFilters. /// /// In en, this message translates to: /// **'Clear filters'** String get storeClearFilters; /// No description provided for @storeStatusAll. /// /// In en, this message translates to: /// **'All'** String get storeStatusAll; /// No description provided for @storeStatusPublished. /// /// In en, this message translates to: /// **'Published'** String get storeStatusPublished; /// No description provided for @storeStatusAlpha. /// /// In en, this message translates to: /// **'Alpha'** String get storeStatusAlpha; /// No description provided for @storeStatusPlanned. /// /// In en, this message translates to: /// **'Planned'** String get storeStatusPlanned; /// No description provided for @storeInstalledOnly. /// /// In en, this message translates to: /// **'Installed'** String get storeInstalledOnly; /// No description provided for @storeNResults. /// /// In en, this message translates to: /// **'{n} result{n, plural, =1{} other{s}}'** String storeNResults(int n); /// No description provided for @storeFederationNudgeTitle. /// /// In en, this message translates to: /// **'Want more capabilities?'** String get storeFederationNudgeTitle; /// No description provided for @storeFederationNudgeBody. /// /// In en, this message translates to: /// **'Configure an MCP server or n8n endpoint in Settings → MCP Clients / N8N Endpoints. Discovered tools and workflows surface here as `mcp..` and `n8n..` capabilities — every Anthropic / community MCP server adds a handful at once.'** String get storeFederationNudgeBody; /// No description provided for @storeFederationNudgeButton. /// /// In en, this message translates to: /// **'Open Settings'** String get storeFederationNudgeButton; /// No description provided for @auditTitle. /// /// In en, this message translates to: /// **'Audit'** String get auditTitle; /// No description provided for @auditNoEvents. /// /// In en, this message translates to: /// **'No events yet'** String get auditNoEvents; /// No description provided for @auditNoEventsHint. /// /// In en, this message translates to: /// **'Run a flow to populate the audit stream.\nEvents appear here within seconds.'** String get auditNoEventsHint; /// No description provided for @modulesTitle. /// /// In en, this message translates to: /// **'Modules'** String get modulesTitle; /// No description provided for @modulesNoneTitle. /// /// In en, this message translates to: /// **'No modules yet'** String get modulesNoneTitle; /// No description provided for @modulesNoneHint. /// /// In en, this message translates to: /// **'Run `fai install ` or check ~/.fai/modules/.'** String get modulesNoneHint; /// No description provided for @modulesReloadTooltip. /// /// In en, this message translates to: /// **'Reload'** String get modulesReloadTooltip; /// No description provided for @modulesRecentActivity. /// /// In en, this message translates to: /// **'RECENT ACTIVITY'** String get modulesRecentActivity; /// No description provided for @modulesRecentActivityHint. /// /// In en, this message translates to: /// **'last {n} install/uninstall events from the audit log'** String modulesRecentActivityHint(int n); /// No description provided for @modulesActivityInstalled. /// /// In en, this message translates to: /// **'installed'** String get modulesActivityInstalled; /// No description provided for @modulesActivityUninstalled. /// /// In en, this message translates to: /// **'uninstalled'** String get modulesActivityUninstalled; /// No description provided for @modulesCapabilitiesLabel. /// /// In en, this message translates to: /// **'Capabilities'** String get modulesCapabilitiesLabel; /// No description provided for @modulesUninstallTitle. /// /// In en, this message translates to: /// **'Uninstall module?'** String get modulesUninstallTitle; /// No description provided for @modulesUninstallBody. /// /// In en, this message translates to: /// **'Removes {name} v{version} from this hub. Flows that reference it will fail at the next run. A `module.uninstalled` audit event is recorded.'** String modulesUninstallBody(String name, String version); /// No description provided for @modulesUninstalledToast. /// /// In en, this message translates to: /// **'Uninstalled {name} v{version}.'** String modulesUninstalledToast(String name, String version); /// No description provided for @modulesUninstallFailed. /// /// In en, this message translates to: /// **'Uninstall failed: {error}'** String modulesUninstallFailed(String error); /// No description provided for @modulesUninstalling. /// /// In en, this message translates to: /// **'Uninstalling…'** String get modulesUninstalling; /// No description provided for @approvalsTitle. /// /// In en, this message translates to: /// **'Approvals'** String get approvalsTitle; /// No description provided for @approvalsTabPending. /// /// In en, this message translates to: /// **'Pending'** String get approvalsTabPending; /// No description provided for @approvalsTabHistory. /// /// In en, this message translates to: /// **'History'** String get approvalsTabHistory; /// No description provided for @approvalsInboxZero. /// /// In en, this message translates to: /// **'Inbox zero'** String get approvalsInboxZero; /// No description provided for @approvalsInboxHint. /// /// In en, this message translates to: /// **'All caught up. New `system.approval@^0` steps land here automatically.'** String get approvalsInboxHint; /// No description provided for @doctorTitle. /// /// In en, this message translates to: /// **'Doctor'** String get doctorTitle; /// No description provided for @doctorRecheckTooltip. /// /// In en, this message translates to: /// **'Re-check'** String get doctorRecheckTooltip; /// No description provided for @doctorEventLogSection. /// /// In en, this message translates to: /// **'Event log'** String get doctorEventLogSection; /// No description provided for @doctorModulesApprovalsSection. /// /// In en, this message translates to: /// **'Modules & approvals'** String get doctorModulesApprovalsSection; /// No description provided for @doctorHostServicesSection. /// /// In en, this message translates to: /// **'Host services'** String get doctorHostServicesSection; /// No description provided for @doctorDaemonFilesSection. /// /// In en, this message translates to: /// **'Daemon files'** String get doctorDaemonFilesSection; /// No description provided for @doctorDaemonControlSection. /// /// In en, this message translates to: /// **'Daemon control'** String get doctorDaemonControlSection; /// No description provided for @doctorChainIntact. /// /// In en, this message translates to: /// **'Hash chain intact'** String get doctorChainIntact; /// No description provided for @doctorChainIntactDetail. /// /// In en, this message translates to: /// **'{n} events · prev_event_sha256 verified end-to-end'** String doctorChainIntactDetail(int n); /// No description provided for @doctorChainTampered. /// /// In en, this message translates to: /// **'Tampering detected'** String get doctorChainTampered; /// No description provided for @doctorChainTamperedDetail. /// /// In en, this message translates to: /// **'{verified} of {total} verified before mismatch at {id}'** String doctorChainTamperedDetail(int verified, int total, String id); /// No description provided for @doctorChainPillOk. /// /// In en, this message translates to: /// **'WORM-1'** String get doctorChainPillOk; /// No description provided for @doctorChainPillTamper. /// /// In en, this message translates to: /// **'TAMPER'** String get doctorChainPillTamper; /// No description provided for @doctorVerifyNow. /// /// In en, this message translates to: /// **'Verify now'** String get doctorVerifyNow; /// No description provided for @doctorRestart. /// /// In en, this message translates to: /// **'Restart'** String get doctorRestart; /// No description provided for @doctorStart. /// /// In en, this message translates to: /// **'Start'** String get doctorStart; /// No description provided for @doctorStop. /// /// In en, this message translates to: /// **'Stop'** String get doctorStop; /// No description provided for @doctorStatusAction. /// /// In en, this message translates to: /// **'Status'** String get doctorStatusAction; /// No description provided for @doctorRunningOn. /// /// In en, this message translates to: /// **'Running on {name}: {endpoint}'** String doctorRunningOn(String name, String endpoint); /// No description provided for @doctorStoppedOn. /// /// In en, this message translates to: /// **'{name} daemon stopped'** String doctorStoppedOn(String name); /// No description provided for @doctorStatusUnknown. /// /// In en, this message translates to: /// **'Daemon status: …'** String get doctorStatusUnknown; /// No description provided for @doctorPillRunning. /// /// In en, this message translates to: /// **'running'** String get doctorPillRunning; /// No description provided for @doctorPillStopped. /// /// In en, this message translates to: /// **'stopped'** String get doctorPillStopped; /// No description provided for @doctorDaemonControlHint. /// /// In en, this message translates to: /// **'Studio shells out to the platform binary — mirrors `fai daemon …` exactly so the CLI and UI stay in lockstep.'** String get doctorDaemonControlHint; /// No description provided for @doctorDaemonControlWorking. /// /// In en, this message translates to: /// **'Working…'** String get doctorDaemonControlWorking; /// No description provided for @doctorPathLog. /// /// In en, this message translates to: /// **'Log'** String get doctorPathLog; /// No description provided for @doctorPathConfig. /// /// In en, this message translates to: /// **'Config'** String get doctorPathConfig; /// No description provided for @doctorPathDb. /// /// In en, this message translates to: /// **'Audit DB'** String get doctorPathDb; /// No description provided for @doctorPathModules. /// /// In en, this message translates to: /// **'Modules dir'** String get doctorPathModules; /// No description provided for @doctorPathFlows. /// /// In en, this message translates to: /// **'Flows dir'** String get doctorPathFlows; /// No description provided for @doctorPathPid. /// /// In en, this message translates to: /// **'PID file'** String get doctorPathPid; /// No description provided for @doctorPathsEmpty. /// /// In en, this message translates to: /// **'Daemon did not report file paths. Update the running hub via `fai daemon restart`.'** String get doctorPathsEmpty; /// No description provided for @doctorOpenError. /// /// In en, this message translates to: /// **'Could not open: {detail}'** String doctorOpenError(String detail); /// No description provided for @doctorUpdateAvailable. /// /// In en, this message translates to: /// **'Update available — {version}'** String doctorUpdateAvailable(String version); /// No description provided for @doctorUpdateBody. /// /// In en, this message translates to: /// **'Channel {channel} now offers {version}. Apply via the button — Studio shells out to `fai update apply --channel {channel}`.'** String doctorUpdateBody(String channel, String version); /// No description provided for @doctorUpdateUnreachable. /// /// In en, this message translates to: /// **'Release host unreachable'** String get doctorUpdateUnreachable; /// No description provided for @doctorUpdateUnreachableBody. /// /// In en, this message translates to: /// **'Could not contact the release feed for {channel}.'** String doctorUpdateUnreachableBody(String channel); /// No description provided for @doctorReleaseNotes. /// /// In en, this message translates to: /// **'notes: {url}'** String doctorReleaseNotes(String url); /// No description provided for @doctorPillNew. /// /// In en, this message translates to: /// **'new'** String get doctorPillNew; /// No description provided for @doctorPillOffline. /// /// In en, this message translates to: /// **'offline'** String get doctorPillOffline; /// No description provided for @doctorApplyUpdate. /// /// In en, this message translates to: /// **'Apply update'** String get doctorApplyUpdate; /// No description provided for @doctorApplying. /// /// In en, this message translates to: /// **'Applying…'** String get doctorApplying; /// No description provided for @doctorApplyDone. /// /// In en, this message translates to: /// **'Update applied. Restart Studio to see the new daemon version.'** String get doctorApplyDone; /// No description provided for @mcpHeader. /// /// In en, this message translates to: /// **'MCP CLIENTS'** String get mcpHeader; /// No description provided for @mcpHint. /// /// In en, this message translates to: /// **'External MCP servers federate their tools as `mcp..` capabilities. Configure once, see them in the Store.'** String get mcpHint; /// No description provided for @mcpEmpty. /// /// In en, this message translates to: /// **'No MCP servers configured. Click + to add one.'** String get mcpEmpty; /// No description provided for @n8nHeader. /// /// In en, this message translates to: /// **'N8N ENDPOINTS'** String get n8nHeader; /// No description provided for @n8nHint. /// /// In en, this message translates to: /// **'Active n8n workflows surface as `n8n..` capabilities. Configure once, see them in the Store.'** String get n8nHint; /// No description provided for @n8nEmpty. /// /// In en, this message translates to: /// **'No n8n endpoints configured. Click + to add one.'** String get n8nEmpty; /// No description provided for @hubUnreachable. /// /// In en, this message translates to: /// **'Hub unreachable'** String get hubUnreachable; /// No description provided for @hubUnreachableHint. /// /// In en, this message translates to: /// **'Start the hub with `fai serve`.'** String get hubUnreachableHint; /// No description provided for @languageEnglish. /// /// In en, this message translates to: /// **'English'** String get languageEnglish; /// No description provided for @languageGerman. /// /// In en, this message translates to: /// **'Deutsch'** String get languageGerman; } class _AppLocalizationsDelegate extends LocalizationsDelegate { const _AppLocalizationsDelegate(); @override Future load(Locale locale) { return SynchronousFuture(lookupAppLocalizations(locale)); } @override bool isSupported(Locale locale) => ['de', 'en'].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(); } 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.', ); }