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_en.dart'; import 'app_localizations_ru.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 'i18n/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('ru'), ]; /// No description provided for @appTitle. /// /// In en, this message translates to: /// **'SXCHNGE · Your next move'** String get appTitle; /// No description provided for @nextChapter. /// /// In en, this message translates to: /// **'YOUR NEXT CHAPTER'** String get nextChapter; /// No description provided for @loginHeading. /// /// In en, this message translates to: /// **'Hey, welcome\nback.'** String get loginHeading; /// No description provided for @signupHeading. /// /// In en, this message translates to: /// **'Make your\nfirst move.'** String get signupHeading; /// No description provided for @loginIntro. /// /// In en, this message translates to: /// **'Your next move is just a login away.'** String get loginIntro; /// No description provided for @signupIntro. /// /// In en, this message translates to: /// **'A new account. A world of possibility.'** String get signupIntro; /// No description provided for @login. /// /// In en, this message translates to: /// **'Log in'** String get login; /// No description provided for @signup. /// /// In en, this message translates to: /// **'Sign up'** String get signup; /// No description provided for @name. /// /// In en, this message translates to: /// **'Your name'** String get name; /// No description provided for @email. /// /// In en, this message translates to: /// **'Email address'** String get email; /// No description provided for @emailHint. /// /// In en, this message translates to: /// **'you@example.com'** String get emailHint; /// No description provided for @password. /// /// In en, this message translates to: /// **'Password'** String get password; /// No description provided for @confirmPassword. /// /// In en, this message translates to: /// **'Confirm password'** String get confirmPassword; /// No description provided for @passwordHint. /// /// In en, this message translates to: /// **'Use at least 12 characters.'** String get passwordHint; /// No description provided for @showPassword. /// /// In en, this message translates to: /// **'Show password'** String get showPassword; /// No description provided for @hidePassword. /// /// In en, this message translates to: /// **'Hide password'** String get hidePassword; /// No description provided for @showConfirmation. /// /// In en, this message translates to: /// **'Show confirmation'** String get showConfirmation; /// No description provided for @hideConfirmation. /// /// In en, this message translates to: /// **'Hide confirmation'** String get hideConfirmation; /// No description provided for @createAccount. /// /// In en, this message translates to: /// **'Create account'** String get createAccount; /// No description provided for @letsGo. /// /// In en, this message translates to: /// **'Let’s go'** String get letsGo; /// No description provided for @loginPreview. /// /// In en, this message translates to: /// **'Demo login completed. No real session was created. Your credentials have not been sent or saved.'** String get loginPreview; /// No description provided for @signupPreview. /// /// In en, this message translates to: /// **'Demo sign-up completed. No real account was created. Your credentials have not been sent or saved.'** String get signupPreview; /// No description provided for @alreadyMember. /// /// In en, this message translates to: /// **'Already part of sxchnge?'** String get alreadyMember; /// No description provided for @newHere. /// /// In en, this message translates to: /// **'New around here?'** String get newHere; /// No description provided for @loginInstead. /// /// In en, this message translates to: /// **'Log in instead'** String get loginInstead; /// No description provided for @createAnAccount. /// /// In en, this message translates to: /// **'Create an account'** String get createAnAccount; /// No description provided for @earlyPreview. /// /// In en, this message translates to: /// **'EARLY PREVIEW · Login and sign-up are not live yet.'** String get earlyPreview; /// No description provided for @brandEyebrow. /// /// In en, this message translates to: /// **'A LITTLE CHANGE. A BIG NEXT STEP.'** String get brandEyebrow; /// No description provided for @brandHeading. /// /// In en, this message translates to: /// **'Good moves.\nStart here.'** String get brandHeading; /// No description provided for @brandIntro. /// /// In en, this message translates to: /// **'A fresh way forward.\nMake it yours with sxchnge.'** String get brandIntro; /// No description provided for @brandCard. /// /// In en, this message translates to: /// **'Less friction.\nMore possibility.'** String get brandCard; /// No description provided for @brandFooter. /// /// In en, this message translates to: /// **'YOUR NEXT MOVE STARTS WITH YOU.'** String get brandFooter; /// No description provided for @emailRequired. /// /// In en, this message translates to: /// **'Enter your email address.'** String get emailRequired; /// No description provided for @emailInvalid. /// /// In en, this message translates to: /// **'Enter a valid email address.'** String get emailInvalid; /// No description provided for @nameRequired. /// /// In en, this message translates to: /// **'Enter your name.'** String get nameRequired; /// No description provided for @passwordRequired. /// /// In en, this message translates to: /// **'Enter your password.'** String get passwordRequired; /// No description provided for @confirmationRequired. /// /// In en, this message translates to: /// **'Confirm your password.'** String get confirmationRequired; /// No description provided for @passwordMismatch. /// /// In en, this message translates to: /// **'Passwords do not match.'** String get passwordMismatch; /// No description provided for @language. /// /// In en, this message translates to: /// **'Language'** String get language; /// No description provided for @preferenceNotSaved. /// /// In en, this message translates to: /// **'Language changed for this session. Your preference could not be saved.'** String get preferenceNotSaved; /// No description provided for @authWorking. /// /// In en, this message translates to: /// **'Please wait…'** String get authWorking; /// No description provided for @authCompleted. /// /// In en, this message translates to: /// **'Request completed.'** String get authCompleted; /// No description provided for @authInvalidCredentials. /// /// In en, this message translates to: /// **'Email or password is incorrect. Please try again.'** String get authInvalidCredentials; /// No description provided for @authEmailInUse. /// /// In en, this message translates to: /// **'This email is already registered. Try logging in.'** String get authEmailInUse; /// No description provided for @authUnavailable. /// /// In en, this message translates to: /// **'The service is unavailable. Please try again.'** String get authUnavailable; /// No description provided for @authUnexpected. /// /// In en, this message translates to: /// **'Something went wrong. Please try again.'** String get authUnexpected; /// No description provided for @checkInbox. /// /// In en, this message translates to: /// **'Check your inbox.'** String get checkInbox; /// No description provided for @verificationSent. /// /// In en, this message translates to: /// **'We’ve sent you a verification email. Open the link in your inbox to confirm your email address.'** String get verificationSent; /// No description provided for @verificationSending. /// /// In en, this message translates to: /// **'Preparing your verification email…'** String get verificationSending; /// No description provided for @verificationChecking. /// /// In en, this message translates to: /// **'Verifying your email…'** String get verificationChecking; /// No description provided for @verificationVerified. /// /// In en, this message translates to: /// **'Your email\nis verified.'** String get verificationVerified; /// No description provided for @verificationVerifiedBody. /// /// In en, this message translates to: /// **'One step done. You can now return to login. Identity verification is a separate step.'** String get verificationVerifiedBody; /// No description provided for @verificationExpired. /// /// In en, this message translates to: /// **'This link has expired.'** String get verificationExpired; /// No description provided for @verificationExpiredBody. /// /// In en, this message translates to: /// **'Request a new verification email and use the latest link.'** String get verificationExpiredBody; /// No description provided for @verificationInvalid. /// /// In en, this message translates to: /// **'This link isn’t valid.'** String get verificationInvalid; /// No description provided for @verificationInvalidBody. /// /// In en, this message translates to: /// **'The confirmation link is missing or invalid. Open the complete link from your email, or request a new one.'** String get verificationInvalidBody; /// No description provided for @verificationInternal. /// /// In en, this message translates to: /// **'Something went wrong.'** String get verificationInternal; /// No description provided for @verificationInternalBody. /// /// In en, this message translates to: /// **'We couldn’t complete your request because of an internal error. Please try again.'** String get verificationInternalBody; /// No description provided for @verificationResend. /// /// In en, this message translates to: /// **'Resend verification email'** String get verificationResend; /// No description provided for @verificationRequest. /// /// In en, this message translates to: /// **'Send a new verification email'** String get verificationRequest; /// No description provided for @verificationRetry. /// /// In en, this message translates to: /// **'Retry verification'** String get verificationRetry; /// No description provided for @verificationBack. /// /// In en, this message translates to: /// **'Back to login'** String get verificationBack; /// No description provided for @verificationHint. /// /// In en, this message translates to: /// **'No email? Check your spam folder or request another below.'** String get verificationHint; /// No description provided for @verificationDemo. /// /// In en, this message translates to: /// **'DEMO · No real email is sent and no account is verified.'** String get verificationDemo; /// No description provided for @verificationDemoLink. /// /// In en, this message translates to: /// **'Open demo confirmation link'** String get verificationDemoLink; /// No description provided for @verificationStep. /// /// In en, this message translates to: /// **'CONFIRM YOUR EMAIL'** String get verificationStep; /// No description provided for @demoSentHeading. /// /// In en, this message translates to: /// **'Demo email prepared.'** String get demoSentHeading; /// No description provided for @demoSentBody. /// /// In en, this message translates to: /// **'No email was sent. Use the demo confirmation below to preview the next step.'** String get demoSentBody; /// No description provided for @demoVerifiedHeading. /// /// In en, this message translates to: /// **'Demo verification\ncomplete.'** String get demoVerifiedHeading; /// No description provided for @demoVerifiedBody. /// /// In en, this message translates to: /// **'You’ve previewed email confirmation. No account was verified. Return to login to explore the demo.'** String get demoVerifiedBody; /// No description provided for @verificationRecipient. /// /// In en, this message translates to: /// **'Recipient'** String get verificationRecipient; /// No description provided for @verificationChangeEmail. /// /// In en, this message translates to: /// **'Change email'** String get verificationChangeEmail; /// No description provided for @demoResend. /// /// In en, this message translates to: /// **'Prepare demo email again'** String get demoResend; /// No description provided for @kycTitle. /// /// In en, this message translates to: /// **'Verification & limits'** String get kycTitle; /// No description provided for @kycIntro. /// /// In en, this message translates to: /// **'Your account, at your pace. Verify your identity when you need higher limits.'** String get kycIntro; /// No description provided for @kycDemo. /// /// In en, this message translates to: /// **'DEMO · Use sample images only. Photos stay in memory, are never uploaded, and disappear when you leave or reload. Review decisions are simulated.'** String get kycDemo; /// No description provided for @kycUnverified. /// /// In en, this message translates to: /// **'Not verified'** String get kycUnverified; /// No description provided for @kycPending. /// /// In en, this message translates to: /// **'In review'** String get kycPending; /// No description provided for @kycApproved. /// /// In en, this message translates to: /// **'Identity verified'** String get kycApproved; /// No description provided for @kycChanges. /// /// In en, this message translates to: /// **'New photos needed'** String get kycChanges; /// No description provided for @kycDenied. /// /// In en, this message translates to: /// **'Verification declined'** String get kycDenied; /// No description provided for @kycUnverifiedBody. /// /// In en, this message translates to: /// **'You can keep using your account with basic limits. Submit a passport photo and a selfie holding it to request an upgrade.'** String get kycUnverifiedBody; /// No description provided for @kycPendingBody. /// /// In en, this message translates to: /// **'Your submission is awaiting a human review. Basic limits remain active until approval. You do not need to submit again.'** String get kycPendingBody; /// No description provided for @kycApprovedBody. /// /// In en, this message translates to: /// **'Your review is complete. Check your current limits below.'** String get kycApprovedBody; /// No description provided for @kycChangesBody. /// /// In en, this message translates to: /// **'Your account remains available with basic limits. Replace the photos and submit a new review request.'** String get kycChangesBody; /// No description provided for @kycDeniedBody. /// /// In en, this message translates to: /// **'Basic limits remain available. If you believe this decision is incorrect, contact support for a review.'** String get kycDeniedBody; /// No description provided for @kycPassportReason. /// /// In en, this message translates to: /// **'The passport details could not be read. Retake the photo in good light, with every edge visible.'** String get kycPassportReason; /// No description provided for @kycSelfieReason. /// /// In en, this message translates to: /// **'Your face or passport was not clear in the selfie. Keep both visible and in focus.'** String get kycSelfieReason; /// No description provided for @kycExpiredReason. /// /// In en, this message translates to: /// **'The passport has expired. Use a valid passport and take both photos again.'** String get kycExpiredReason; /// No description provided for @kycDeniedReason. /// /// In en, this message translates to: /// **'We could not verify your identity from this submission.'** String get kycDeniedReason; /// No description provided for @kycStart. /// /// In en, this message translates to: /// **'Verify identity'** String get kycStart; /// No description provided for @kycResubmit. /// /// In en, this message translates to: /// **'Replace photos'** String get kycResubmit; /// No description provided for @kycRefresh. /// /// In en, this message translates to: /// **'Refresh status & limits'** String get kycRefresh; /// No description provided for @kycSupport. /// /// In en, this message translates to: /// **'Contact support'** String get kycSupport; /// No description provided for @kycSupportBody. /// /// In en, this message translates to: /// **'Support is not connected in this preview. In the live app, you will be able to request a review here without submitting documents again.'** String get kycSupportBody; /// No description provided for @kycBasic. /// /// In en, this message translates to: /// **'Basic'** String get kycBasic; /// No description provided for @kycVerifiedTier. /// /// In en, this message translates to: /// **'Verified'** String get kycVerifiedTier; /// No description provided for @kycLimits. /// /// In en, this message translates to: /// **'Your limits'** String get kycLimits; /// No description provided for @kycLimitsDemo. /// /// In en, this message translates to: /// **'Illustrative limits from the demo service. These are not a live offer.'** String get kycLimitsDemo; /// No description provided for @kycDay. /// /// In en, this message translates to: /// **'Daily volume'** String get kycDay; /// No description provided for @kycMonth. /// /// In en, this message translates to: /// **'Monthly volume'** String get kycMonth; /// No description provided for @kycCurrent. /// /// In en, this message translates to: /// **'Current cap'** String get kycCurrent; /// No description provided for @kycRemaining. /// /// In en, this message translates to: /// **'Available'** String get kycRemaining; /// No description provided for @kycAfter. /// /// In en, this message translates to: /// **'After approval'** String get kycAfter; /// No description provided for @kycLimitsError. /// /// In en, this message translates to: /// **'Limits could not be refreshed. Any values below are out of date. Retry to see your current access.'** String get kycLimitsError; /// No description provided for @kycLimitsEmpty. /// /// In en, this message translates to: /// **'No limits were returned. Refresh or check with support before making a transaction.'** String get kycLimitsEmpty; /// No description provided for @kycLoading. /// /// In en, this message translates to: /// **'Loading your status…'** String get kycLoading; /// No description provided for @kycPassport. /// /// In en, this message translates to: /// **'Passport photo'** String get kycPassport; /// No description provided for @kycSelfie. /// /// In en, this message translates to: /// **'Selfie with passport'** String get kycSelfie; /// No description provided for @kycReview. /// /// In en, this message translates to: /// **'Review your photos'** String get kycReview; /// No description provided for @kycPassportHelp. /// /// In en, this message translates to: /// **'Open your valid passport to the photo page. Show all four edges and keep text sharp. Avoid glare, blur and covered details.'** String get kycPassportHelp; /// No description provided for @kycSelfieHelp. /// /// In en, this message translates to: /// **'Hold the open passport beside your face. Show your whole face and the photo page in the same image. Keep both sharp and uncovered.'** String get kycSelfieHelp; /// No description provided for @kycFileRules. /// /// In en, this message translates to: /// **'JPEG or PNG · up to 10 MB · at least 600 × 600 pixels. Take a photo with your camera, then choose it here.'** String get kycFileRules; /// No description provided for @kycChoose. /// /// In en, this message translates to: /// **'Choose photo'** String get kycChoose; /// No description provided for @kycReplace. /// /// In en, this message translates to: /// **'Choose a different photo'** String get kycReplace; /// No description provided for @kycRemove. /// /// In en, this message translates to: /// **'Remove photo'** String get kycRemove; /// No description provided for @kycNext. /// /// In en, this message translates to: /// **'Continue'** String get kycNext; /// No description provided for @kycBack. /// /// In en, this message translates to: /// **'Back'** String get kycBack; /// No description provided for @kycSkip. /// /// In en, this message translates to: /// **'Keep basic limits'** String get kycSkip; /// No description provided for @kycClose. /// /// In en, this message translates to: /// **'Back to account preview'** String get kycClose; /// No description provided for @kycReviewHelp. /// /// In en, this message translates to: /// **'Check that both photos are readable and show the same passport. A staff member will review them; submission does not immediately raise your limits.'** String get kycReviewHelp; /// No description provided for @kycConfirm. /// /// In en, this message translates to: /// **'These photos show me and my own valid passport.'** String get kycConfirm; /// No description provided for @kycSubmit. /// /// In en, this message translates to: /// **'Submit for review'** String get kycSubmit; /// No description provided for @kycSubmitDemo. /// /// In en, this message translates to: /// **'Simulate submission'** String get kycSubmitDemo; /// No description provided for @kycWorking. /// /// In en, this message translates to: /// **'Processing… Please keep this page open.'** String get kycWorking; /// No description provided for @kycDiscardTitle. /// /// In en, this message translates to: /// **'Discard these photos?'** String get kycDiscardTitle; /// No description provided for @kycDiscardBody. /// /// In en, this message translates to: /// **'Your draft is only in memory. Leaving will remove the selected photos; you can start again later.'** String get kycDiscardBody; /// No description provided for @kycStay. /// /// In en, this message translates to: /// **'Keep editing'** String get kycStay; /// No description provided for @kycDiscard. /// /// In en, this message translates to: /// **'Discard & leave'** String get kycDiscard; /// No description provided for @kycErrorUnavailable. /// /// In en, this message translates to: /// **'The service is unavailable. Your selected photos are still here. Try again.'** String get kycErrorUnavailable; /// No description provided for @kycErrorInternal. /// /// In en, this message translates to: /// **'Something went wrong. Try again; your selected photos have been kept.'** String get kycErrorInternal; /// No description provided for @kycErrorPermission. /// /// In en, this message translates to: /// **'We could not open that photo. Check file access or choose another image.'** String get kycErrorPermission; /// No description provided for @kycErrorFormat. /// /// In en, this message translates to: /// **'Choose a JPEG or PNG image. Other formats are not supported.'** String get kycErrorFormat; /// No description provided for @kycErrorLarge. /// /// In en, this message translates to: /// **'This image is too large. Choose one under 10 MB and 40 megapixels.'** String get kycErrorLarge; /// No description provided for @kycErrorUnreadable. /// /// In en, this message translates to: /// **'This image is damaged or cannot be read. Choose another photo.'** String get kycErrorUnreadable; /// No description provided for @kycErrorSmall. /// /// In en, this message translates to: /// **'The photo is too small. Use an image at least 600 pixels wide and high.'** String get kycErrorSmall; /// No description provided for @kycErrorIncomplete. /// /// In en, this message translates to: /// **'Choose both photos and confirm they belong to you before submitting.'** String get kycErrorIncomplete; /// No description provided for @kycErrorSession. /// /// In en, this message translates to: /// **'Your session has expired. Return to login, then check your verification status.'** String get kycErrorSession; /// No description provided for @kycErrorRate. /// /// In en, this message translates to: /// **'Too many requests. Wait a moment before trying again.'** String get kycErrorRate; /// No description provided for @kycErrorConflict. /// /// In en, this message translates to: /// **'Your review status has changed. Refresh it before continuing.'** String get kycErrorConflict; /// No description provided for @kycDemoControls. /// /// In en, this message translates to: /// **'Demo: simulate a backoffice decision'** String get kycDemoControls; /// No description provided for @kycDemoApprove. /// /// In en, this message translates to: /// **'Approve'** String get kycDemoApprove; /// No description provided for @kycDemoCorrect. /// /// In en, this message translates to: /// **'Request clearer passport'** String get kycDemoCorrect; /// No description provided for @kycDemoSelfie. /// /// In en, this message translates to: /// **'Request clearer selfie'** String get kycDemoSelfie; /// No description provided for @kycDemoExpired. /// /// In en, this message translates to: /// **'Passport expired'** String get kycDemoExpired; /// No description provided for @kycDemoDeny. /// /// In en, this message translates to: /// **'Decline'** String get kycDemoDeny; /// No description provided for @kycPreview. /// /// In en, this message translates to: /// **'Explore verification & limits'** String get kycPreview; /// No description provided for @kycChooseFirst. /// /// In en, this message translates to: /// **'Choose a photo to continue.'** String get kycChooseFirst; /// No description provided for @kycStatusStale. /// /// In en, this message translates to: /// **'Status could not be refreshed. The status shown is the last known result.'** String get kycStatusStale; /// No description provided for @kycUsed. /// /// In en, this message translates to: /// **'Used'** String get kycUsed; /// No description provided for @kycReserved. /// /// In en, this message translates to: /// **'Reserved'** String get kycReserved; /// No description provided for @kycUsageHelp. /// /// In en, this message translates to: /// **'Used is completed activity. Reserved is held for pending transactions. Both count toward your limit.'** String get kycUsageHelp; /// No description provided for @kycOccupied. /// /// In en, this message translates to: /// **'Used + reserved'** String get kycOccupied; /// No description provided for @kycNoCapacity. /// /// In en, this message translates to: /// **'No capacity available'** String get kycNoCapacity; } class _AppLocalizationsDelegate extends LocalizationsDelegate { const _AppLocalizationsDelegate(); @override Future load(Locale locale) { return SynchronousFuture(lookupAppLocalizations(locale)); } @override bool isSupported(Locale locale) => ['en', 'ru'].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 'en': return AppLocalizationsEn(); case 'ru': return AppLocalizationsRu(); } 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.', ); }