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 'halkyon_app_localizations_de.dart'; import 'halkyon_app_localizations_en.dart'; // ignore_for_file: type=lint /// Callers can lookup localized strings with an instance of HalkyonAppLocalizations /// returned by `HalkyonAppLocalizations.of(context)`. /// /// Applications need to include `HalkyonAppLocalizations.delegate()` in their app's /// `localizationDelegates` list, and the locales they support in the app's /// `supportedLocales` list. For example: /// /// ```dart /// import 'l10n/halkyon_app_localizations.dart'; /// /// return MaterialApp( /// localizationsDelegates: HalkyonAppLocalizations.localizationsDelegates, /// supportedLocales: HalkyonAppLocalizations.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 HalkyonAppLocalizations.supportedLocales /// property. abstract class HalkyonAppLocalizations { HalkyonAppLocalizations(String locale) : localeName = intl.Intl.canonicalizedLocale(locale.toString()); final String localeName; static HalkyonAppLocalizations of(BuildContext context) { return Localizations.of( context, HalkyonAppLocalizations, )!; } static const LocalizationsDelegate delegate = _HalkyonAppLocalizationsDelegate(); /// 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'), Locale('en', 'GB'), Locale('en', 'US'), ]; /// No description provided for @tryAgain. /// /// In en, this message translates to: /// **'Try again'** String get tryAgain; /// Screen readers hear it for the wordmark on the first start. /// /// In en, this message translates to: /// **'Welcome to {app}'** String instanceWelcome(String app); /// No description provided for @instanceBuiltInTagline. /// /// In en, this message translates to: /// **'Comes with the app'** String get instanceBuiltInTagline; /// No description provided for @instanceAnother. /// /// In en, this message translates to: /// **'Another instance'** String get instanceAnother; /// No description provided for @instanceAnotherTagline. /// /// In en, this message translates to: /// **'Enter its address'** String get instanceAnotherTagline; /// No description provided for @instanceAddress. /// /// In en, this message translates to: /// **'Instance address'** String get instanceAddress; /// No description provided for @instanceAddressInvalid. /// /// In en, this message translates to: /// **'This isn\'t an address.'** String get instanceAddressInvalid; /// No description provided for @instanceAddressRequired. /// /// In en, this message translates to: /// **'Enter the address of an instance.'** String get instanceAddressRequired; /// No description provided for @instanceContinue. /// /// In en, this message translates to: /// **'Continue'** String get instanceContinue; /// No description provided for @instanceUnreachable. /// /// In en, this message translates to: /// **'No instance of {app} answers at {name}.'** String instanceUnreachable(String app, String name); /// No description provided for @instanceUseBuiltIn. /// /// In en, this message translates to: /// **'Use {name}'** String instanceUseBuiltIn(String name); /// No description provided for @instanceOpenFailed. /// /// In en, this message translates to: /// **'Couldn\'t open the app on {name}.'** String instanceOpenFailed(String name); /// No description provided for @instanceDataAndBackupsIn. /// /// In en, this message translates to: /// **'Data and backups: {place}'** String instanceDataAndBackupsIn(String place); /// No description provided for @instanceDataIn. /// /// In en, this message translates to: /// **'Data: {place}'** String instanceDataIn(String place); /// No description provided for @instanceBackupsIn. /// /// In en, this message translates to: /// **'Backups: {place}'** String instanceBackupsIn(String place); /// No description provided for @instanceNoBackups. /// /// In en, this message translates to: /// **'No backups'** String get instanceNoBackups; /// No description provided for @instanceEuropeanUnion. /// /// In en, this message translates to: /// **'European Union'** String get instanceEuropeanUnion; /// A country of the European Union, where an instance keeps data: Germany (EU). /// /// In en, this message translates to: /// **'{country} (EU)'** String instanceCountryInEu(String country); /// A state or region with its country, where an instance keeps data: California, United States. /// /// In en, this message translates to: /// **'{subdivision}, {country}'** String instanceSubdivisionOf(String subdivision, String country); /// No description provided for @accountsTitle. /// /// In en, this message translates to: /// **'Accounts'** String get accountsTitle; /// No description provided for @accountAdd. /// /// In en, this message translates to: /// **'Add account'** String get accountAdd; /// No description provided for @accountAddSubtitle. /// /// In en, this message translates to: /// **'Choose the instance for the account to add.'** String get accountAddSubtitle; /// No description provided for @accountSignedIn. /// /// In en, this message translates to: /// **'Signed in'** String get accountSignedIn; /// No description provided for @accountAnonymous. /// /// In en, this message translates to: /// **'Anonymous'** String get accountAnonymous; /// No description provided for @accountRemoveTooltip. /// /// In en, this message translates to: /// **'Remove account'** String get accountRemoveTooltip; /// No description provided for @accountRemoveTitle. /// /// In en, this message translates to: /// **'Remove account?'** String get accountRemoveTitle; /// No description provided for @accountRemoveMessage. /// /// In en, this message translates to: /// **'Removes the account on {name} from this device, with all the device holds of it. What it synced stays on {name}: sign in there again to have it. An anonymous account can\'t be signed into again.'** String accountRemoveMessage(String name); /// No description provided for @accountRemoveConfirm. /// /// In en, this message translates to: /// **'Remove'** String get accountRemoveConfirm; /// No description provided for @accountSignedInOn. /// /// In en, this message translates to: /// **'Signed in on {instance}'** String accountSignedInOn(String instance); /// No description provided for @accountAnonymousOn. /// /// In en, this message translates to: /// **'Anonymous on {instance}'** String accountAnonymousOn(String instance); /// No description provided for @accountSwitch. /// /// In en, this message translates to: /// **'Switch account'** String get accountSwitch; /// No description provided for @accountSignOut. /// /// In en, this message translates to: /// **'Sign out'** String get accountSignOut; /// No description provided for @accountSignOutTitle. /// /// In en, this message translates to: /// **'Sign out?'** String get accountSignOutTitle; /// No description provided for @accountDelete. /// /// In en, this message translates to: /// **'Delete account'** String get accountDelete; /// No description provided for @accountDeleteTitle. /// /// In en, this message translates to: /// **'Delete your account?'** String get accountDeleteTitle; /// No description provided for @aboutSourceCode. /// /// In en, this message translates to: /// **'The source of what this instance runs:'** String get aboutSourceCode; /// No description provided for @aboutSourceUnreachable. /// /// In en, this message translates to: /// **'Couldn\'t reach this instance to ask where its source is.'** String get aboutSourceUnreachable; /// No description provided for @sessionUnreachable. /// /// In en, this message translates to: /// **'Couldn\'t reach the server.'** String get sessionUnreachable; /// No description provided for @personDataFailed. /// /// In en, this message translates to: /// **'Couldn\'t open this device\'s data.'** String get personDataFailed; /// No description provided for @startSignedOut. /// /// In en, this message translates to: /// **'Signed out'** String get startSignedOut; /// No description provided for @startOn. /// /// In en, this message translates to: /// **'Start on {instance}:'** String startOn(String instance); /// No description provided for @startWithGitHub. /// /// In en, this message translates to: /// **'Sign in with GitHub'** String get startWithGitHub; /// No description provided for @startWithEmail. /// /// In en, this message translates to: /// **'Continue with email'** String get startWithEmail; /// No description provided for @startWithoutAccount. /// /// In en, this message translates to: /// **'Start without an account'** String get startWithoutAccount; /// No description provided for @startAnonymous. /// /// In en, this message translates to: /// **'Progress is saved on this device. Sign in to keep it.'** String get startAnonymous; /// No description provided for @startGitHubFailed. /// /// In en, this message translates to: /// **'Couldn\'t sign in with GitHub.'** String get startGitHubFailed; /// No description provided for @startNoGitHubAccount. /// /// In en, this message translates to: /// **'No account here signs in with this GitHub account yet.'** String get startNoGitHubAccount; /// No description provided for @startOtherInstance. /// /// In en, this message translates to: /// **'Use another instance'** String get startOtherInstance; /// No description provided for @emailSignInTitle. /// /// In en, this message translates to: /// **'Continue with email'** String get emailSignInTitle; /// No description provided for @emailSignInIntro. /// /// In en, this message translates to: /// **'We mail you a code to sign in. This instance keeps only a fingerprint of your address, never the address itself, and writes to it only when you ask for a code.'** String get emailSignInIntro; /// No description provided for @emailSignInAddress. /// /// In en, this message translates to: /// **'Email address'** String get emailSignInAddress; /// No description provided for @emailSignInSend. /// /// In en, this message translates to: /// **'Send code'** String get emailSignInSend; /// No description provided for @emailSignInCodeSent. /// /// In en, this message translates to: /// **'We mailed a code to {address}. It\'s valid for 15 minutes.'** String emailSignInCodeSent(String address); /// No description provided for @emailSignInResent. /// /// In en, this message translates to: /// **'A new code is on its way.'** String get emailSignInResent; /// No description provided for @emailSignInCode. /// /// In en, this message translates to: /// **'Code'** String get emailSignInCode; /// No description provided for @emailSignInContinue. /// /// In en, this message translates to: /// **'Continue'** String get emailSignInContinue; /// No description provided for @emailSignInResend. /// /// In en, this message translates to: /// **'Send a new code'** String get emailSignInResend; /// No description provided for @emailSignInOtherAddress. /// /// In en, this message translates to: /// **'Use another address'** String get emailSignInOtherAddress; /// No description provided for @emailSignInSwitchTitle. /// /// In en, this message translates to: /// **'Switch to the account of {address}?'** String emailSignInSwitchTitle(String address); /// No description provided for @emailSignInSwitchConfirm. /// /// In en, this message translates to: /// **'Switch'** String get emailSignInSwitchConfirm; /// No description provided for @emailSignInSwitchStay. /// /// In en, this message translates to: /// **'Stay anonymous'** String get emailSignInSwitchStay; /// No description provided for @emailSignInTaken. /// /// In en, this message translates to: /// **'{address} already signs in to another account. To switch to it, sign out first.'** String emailSignInTaken(String address); /// No description provided for @emailSignInUnavailable. /// /// In en, this message translates to: /// **'This instance doesn\'t offer signing in with email.'** String get emailSignInUnavailable; /// No description provided for @emailSignInNotAnAddress. /// /// In en, this message translates to: /// **'This isn\'t an email address.'** String get emailSignInNotAnAddress; /// No description provided for @emailSignInTooManyCodes. /// /// In en, this message translates to: /// **'Too many codes in the last hour. Try again later.'** String get emailSignInTooManyCodes; /// No description provided for @emailSignInWrongCode. /// /// In en, this message translates to: /// **'That code isn\'t right.'** String get emailSignInWrongCode; /// No description provided for @emailSignInTooManyTries. /// /// In en, this message translates to: /// **'Too many wrong codes. Ask for a new one.'** String get emailSignInTooManyTries; /// No description provided for @emailSignInCodeExpired. /// /// In en, this message translates to: /// **'This code is no longer valid. Ask for a new one.'** String get emailSignInCodeExpired; /// No description provided for @emailSignInOtherAddressLinked. /// /// In en, this message translates to: /// **'You already sign in with another address.'** String get emailSignInOtherAddressLinked; /// No description provided for @emailSignInMailFailed. /// /// In en, this message translates to: /// **'The instance couldn\'t send the mail. Try again later.'** String get emailSignInMailFailed; /// No description provided for @emailSignInUsePassword. /// /// In en, this message translates to: /// **'This account signs in with its password and an authenticator app.'** String get emailSignInUsePassword; /// No description provided for @emailSignInFailed. /// /// In en, this message translates to: /// **'Couldn\'t reach the instance. Try again.'** String get emailSignInFailed; /// No description provided for @syncTitle. /// /// In en, this message translates to: /// **'Sync'** String get syncTitle; /// No description provided for @syncNow. /// /// In en, this message translates to: /// **'Sync now'** String get syncNow; /// No description provided for @syncStateSyncing. /// /// In en, this message translates to: /// **'Syncing…'** String get syncStateSyncing; /// No description provided for @syncStateSynced. /// /// In en, this message translates to: /// **'Everything synced'** String get syncStateSynced; /// No description provided for @syncStateFailing. /// /// In en, this message translates to: /// **'Sync is failing'** String get syncStateFailing; /// No description provided for @syncStateNotYet. /// /// In en, this message translates to: /// **'Not synced yet'** String get syncStateNotYet; /// No description provided for @syncStateMismatch. /// /// In en, this message translates to: /// **'This app can\'t sync with {server}'** String syncStateMismatch(String server); /// No description provided for @syncMismatchDetail. /// /// In en, this message translates to: /// **'Update the app. If it is up to date, the server needs an update. What you do meanwhile stays on this device and syncs afterwards.'** String get syncMismatchDetail; /// No description provided for @syncLastCompleted. /// /// In en, this message translates to: /// **'Last completed at {time}'** String syncLastCompleted(String time); /// No description provided for @syncLastFailed. /// /// In en, this message translates to: /// **'Last attempt failed at {time}'** String syncLastFailed(String time); /// No description provided for @syncNoRunYet. /// /// In en, this message translates to: /// **'No sync has completed since the app started'** String get syncNoRunYet; /// No description provided for @syncPending. /// /// In en, this message translates to: /// **'{count, plural, =1{1 change waits to sync} other{{count} changes wait to sync}}'** String syncPending(int count); /// No description provided for @syncTroubleLabel. /// /// In en, this message translates to: /// **'Sync needs attention'** String get syncTroubleLabel; /// No description provided for @syncMismatchBanner. /// /// In en, this message translates to: /// **'This app can\'t sync with {server} any more. Update it to keep syncing.'** String syncMismatchBanner(String server); /// No description provided for @syncMismatchMore. /// /// In en, this message translates to: /// **'More'** String get syncMismatchMore; } class _HalkyonAppLocalizationsDelegate extends LocalizationsDelegate { const _HalkyonAppLocalizationsDelegate(); @override Future load(Locale locale) { return SynchronousFuture( lookupHalkyonAppLocalizations(locale), ); } @override bool isSupported(Locale locale) => ['de', 'en'].contains(locale.languageCode); @override bool shouldReload(_HalkyonAppLocalizationsDelegate old) => false; } HalkyonAppLocalizations lookupHalkyonAppLocalizations(Locale locale) { // Lookup logic when language+country codes are specified. switch (locale.languageCode) { case 'en': { switch (locale.countryCode) { case 'GB': return HalkyonAppLocalizationsEnGb(); case 'US': return HalkyonAppLocalizationsEnUs(); } break; } } // Lookup logic when only language code is specified. switch (locale.languageCode) { case 'de': return HalkyonAppLocalizationsDe(); case 'en': return HalkyonAppLocalizationsEn(); } throw FlutterError( 'HalkyonAppLocalizations.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.', ); }