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_fr.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<AppLocalizations>(context, AppLocalizations);
  }

  static const LocalizationsDelegate<AppLocalizations> delegate =
      _AppLocalizationsDelegate();

  /// A list of this localizations delegate along with the default localizations
  /// delegates.
  ///
  /// Returns a list of localizations delegates containing this delegate along with
  /// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate,
  /// and GlobalWidgetsLocalizations.delegate.
  ///
  /// Additional delegates can be added by appending to this list in
  /// MaterialApp. This list does not have to be used at all if a custom list
  /// of delegates is preferred or required.
  static const List<LocalizationsDelegate<dynamic>> localizationsDelegates =
      <LocalizationsDelegate<dynamic>>[
        delegate,
        GlobalMaterialLocalizations.delegate,
        GlobalCupertinoLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
      ];

  /// A list of this localizations delegate's supported locales.
  static const List<Locale> supportedLocales = <Locale>[
    Locale('en'),
    Locale('fr'),
  ];

  /// Titre de l'application
  ///
  /// In fr, this message translates to:
  /// **'UnionFlow'**
  String get appTitle;

  /// No description provided for @login.
  ///
  /// In fr, this message translates to:
  /// **'Connexion'**
  String get login;

  /// No description provided for @logout.
  ///
  /// In fr, this message translates to:
  /// **'Déconnexion'**
  String get logout;

  /// No description provided for @email.
  ///
  /// In fr, this message translates to:
  /// **'Email'**
  String get email;

  /// No description provided for @password.
  ///
  /// In fr, this message translates to:
  /// **'Mot de passe'**
  String get password;

  /// No description provided for @forgotPassword.
  ///
  /// In fr, this message translates to:
  /// **'Mot de passe oublié ?'**
  String get forgotPassword;

  /// No description provided for @rememberMe.
  ///
  /// In fr, this message translates to:
  /// **'Se souvenir de moi'**
  String get rememberMe;

  /// No description provided for @signIn.
  ///
  /// In fr, this message translates to:
  /// **'Se connecter'**
  String get signIn;

  /// No description provided for @signUp.
  ///
  /// In fr, this message translates to:
  /// **'S\'inscrire'**
  String get signUp;

  /// No description provided for @welcome.
  ///
  /// In fr, this message translates to:
  /// **'Bienvenue'**
  String get welcome;

  /// No description provided for @welcomeBack.
  ///
  /// In fr, this message translates to:
  /// **'Bon retour'**
  String get welcomeBack;

  /// No description provided for @dashboard.
  ///
  /// In fr, this message translates to:
  /// **'Tableau de bord'**
  String get dashboard;

  /// No description provided for @members.
  ///
  /// In fr, this message translates to:
  /// **'Membres'**
  String get members;

  /// No description provided for @events.
  ///
  /// In fr, this message translates to:
  /// **'Événements'**
  String get events;

  /// No description provided for @organisations.
  ///
  /// In fr, this message translates to:
  /// **'Organisations'**
  String get organisations;

  /// No description provided for @cotisations.
  ///
  /// In fr, this message translates to:
  /// **'Cotisations'**
  String get cotisations;

  /// No description provided for @solidarity.
  ///
  /// In fr, this message translates to:
  /// **'Solidarité'**
  String get solidarity;

  /// No description provided for @reports.
  ///
  /// In fr, this message translates to:
  /// **'Rapports'**
  String get reports;

  /// No description provided for @notifications.
  ///
  /// In fr, this message translates to:
  /// **'Notifications'**
  String get notifications;

  /// No description provided for @profile.
  ///
  /// In fr, this message translates to:
  /// **'Profil'**
  String get profile;

  /// No description provided for @settings.
  ///
  /// In fr, this message translates to:
  /// **'Paramètres'**
  String get settings;

  /// No description provided for @more.
  ///
  /// In fr, this message translates to:
  /// **'Plus'**
  String get more;

  /// No description provided for @search.
  ///
  /// In fr, this message translates to:
  /// **'Rechercher'**
  String get search;

  /// No description provided for @filter.
  ///
  /// In fr, this message translates to:
  /// **'Filtrer'**
  String get filter;

  /// No description provided for @sort.
  ///
  /// In fr, this message translates to:
  /// **'Trier'**
  String get sort;

  /// No description provided for @create.
  ///
  /// In fr, this message translates to:
  /// **'Créer'**
  String get create;

  /// No description provided for @add.
  ///
  /// In fr, this message translates to:
  /// **'Ajouter'**
  String get add;

  /// No description provided for @edit.
  ///
  /// In fr, this message translates to:
  /// **'Modifier'**
  String get edit;

  /// No description provided for @delete.
  ///
  /// In fr, this message translates to:
  /// **'Supprimer'**
  String get delete;

  /// No description provided for @save.
  ///
  /// In fr, this message translates to:
  /// **'Enregistrer'**
  String get save;

  /// No description provided for @cancel.
  ///
  /// In fr, this message translates to:
  /// **'Annuler'**
  String get cancel;

  /// No description provided for @confirm.
  ///
  /// In fr, this message translates to:
  /// **'Confirmer'**
  String get confirm;

  /// No description provided for @close.
  ///
  /// In fr, this message translates to:
  /// **'Fermer'**
  String get close;

  /// No description provided for @back.
  ///
  /// In fr, this message translates to:
  /// **'Retour'**
  String get back;

  /// No description provided for @next.
  ///
  /// In fr, this message translates to:
  /// **'Suivant'**
  String get next;

  /// No description provided for @previous.
  ///
  /// In fr, this message translates to:
  /// **'Précédent'**
  String get previous;

  /// No description provided for @finish.
  ///
  /// In fr, this message translates to:
  /// **'Terminer'**
  String get finish;

  /// No description provided for @retry.
  ///
  /// In fr, this message translates to:
  /// **'Réessayer'**
  String get retry;

  /// No description provided for @refresh.
  ///
  /// In fr, this message translates to:
  /// **'Actualiser'**
  String get refresh;

  /// No description provided for @export.
  ///
  /// In fr, this message translates to:
  /// **'Exporter'**
  String get export;

  /// No description provided for @import.
  ///
  /// In fr, this message translates to:
  /// **'Importer'**
  String get import;

  /// No description provided for @download.
  ///
  /// In fr, this message translates to:
  /// **'Télécharger'**
  String get download;

  /// No description provided for @upload.
  ///
  /// In fr, this message translates to:
  /// **'Téléverser'**
  String get upload;

  /// No description provided for @share.
  ///
  /// In fr, this message translates to:
  /// **'Partager'**
  String get share;

  /// No description provided for @print.
  ///
  /// In fr, this message translates to:
  /// **'Imprimer'**
  String get print;

  /// No description provided for @loading.
  ///
  /// In fr, this message translates to:
  /// **'Chargement...'**
  String get loading;

  /// No description provided for @loadingData.
  ///
  /// In fr, this message translates to:
  /// **'Chargement des données...'**
  String get loadingData;

  /// No description provided for @initializing.
  ///
  /// In fr, this message translates to:
  /// **'Initialisation...'**
  String get initializing;

  /// No description provided for @updating.
  ///
  /// In fr, this message translates to:
  /// **'Mise à jour...'**
  String get updating;

  /// No description provided for @saving.
  ///
  /// In fr, this message translates to:
  /// **'Enregistrement...'**
  String get saving;

  /// No description provided for @deleting.
  ///
  /// In fr, this message translates to:
  /// **'Suppression...'**
  String get deleting;

  /// No description provided for @processing.
  ///
  /// In fr, this message translates to:
  /// **'Traitement...'**
  String get processing;

  /// No description provided for @error.
  ///
  /// In fr, this message translates to:
  /// **'Erreur'**
  String get error;

  /// No description provided for @errorOccurred.
  ///
  /// In fr, this message translates to:
  /// **'Une erreur s\'est produite'**
  String get errorOccurred;

  /// No description provided for @errorUnexpected.
  ///
  /// In fr, this message translates to:
  /// **'Une erreur inattendue s\'est produite.'**
  String get errorUnexpected;

  /// No description provided for @errorNetwork.
  ///
  /// In fr, this message translates to:
  /// **'Erreur de connexion. Vérifiez votre connexion internet.'**
  String get errorNetwork;

  /// No description provided for @errorServer.
  ///
  /// In fr, this message translates to:
  /// **'Erreur serveur. Veuillez réessayer plus tard.'**
  String get errorServer;

  /// No description provided for @errorAuth.
  ///
  /// In fr, this message translates to:
  /// **'Non authentifié. Veuillez vous reconnecter.'**
  String get errorAuth;

  /// No description provided for @errorPermission.
  ///
  /// In fr, this message translates to:
  /// **'Accès refusé. Vous n\'avez pas les permissions nécessaires.'**
  String get errorPermission;

  /// No description provided for @errorNotFound.
  ///
  /// In fr, this message translates to:
  /// **'Ressource non trouvée.'**
  String get errorNotFound;

  /// No description provided for @errorValidation.
  ///
  /// In fr, this message translates to:
  /// **'Données invalides. Vérifiez les informations saisies.'**
  String get errorValidation;

  /// No description provided for @errorTimeout.
  ///
  /// In fr, this message translates to:
  /// **'Délai d\'attente dépassé.'**
  String get errorTimeout;

  /// No description provided for @success.
  ///
  /// In fr, this message translates to:
  /// **'Succès'**
  String get success;

  /// No description provided for @successSaved.
  ///
  /// In fr, this message translates to:
  /// **'Enregistré avec succès'**
  String get successSaved;

  /// No description provided for @successDeleted.
  ///
  /// In fr, this message translates to:
  /// **'Supprimé avec succès'**
  String get successDeleted;

  /// No description provided for @successUpdated.
  ///
  /// In fr, this message translates to:
  /// **'Mis à jour avec succès'**
  String get successUpdated;

  /// No description provided for @successCreated.
  ///
  /// In fr, this message translates to:
  /// **'Créé avec succès'**
  String get successCreated;

  /// No description provided for @warning.
  ///
  /// In fr, this message translates to:
  /// **'Attention'**
  String get warning;

  /// No description provided for @info.
  ///
  /// In fr, this message translates to:
  /// **'Information'**
  String get info;

  /// No description provided for @noData.
  ///
  /// In fr, this message translates to:
  /// **'Aucune donnée disponible'**
  String get noData;

  /// No description provided for @noResults.
  ///
  /// In fr, this message translates to:
  /// **'Aucun résultat trouvé'**
  String get noResults;

  /// No description provided for @noConnection.
  ///
  /// In fr, this message translates to:
  /// **'Pas de connexion'**
  String get noConnection;

  /// No description provided for @emptyList.
  ///
  /// In fr, this message translates to:
  /// **'La liste est vide'**
  String get emptyList;

  /// No description provided for @yes.
  ///
  /// In fr, this message translates to:
  /// **'Oui'**
  String get yes;

  /// No description provided for @no.
  ///
  /// In fr, this message translates to:
  /// **'Non'**
  String get no;

  /// No description provided for @ok.
  ///
  /// In fr, this message translates to:
  /// **'OK'**
  String get ok;

  /// No description provided for @all.
  ///
  /// In fr, this message translates to:
  /// **'Tous'**
  String get all;

  /// No description provided for @none.
  ///
  /// In fr, this message translates to:
  /// **'Aucun'**
  String get none;

  /// No description provided for @name.
  ///
  /// In fr, this message translates to:
  /// **'Nom'**
  String get name;

  /// No description provided for @firstName.
  ///
  /// In fr, this message translates to:
  /// **'Prénom'**
  String get firstName;

  /// No description provided for @lastName.
  ///
  /// In fr, this message translates to:
  /// **'Nom de famille'**
  String get lastName;

  /// No description provided for @fullName.
  ///
  /// In fr, this message translates to:
  /// **'Nom complet'**
  String get fullName;

  /// No description provided for @phone.
  ///
  /// In fr, this message translates to:
  /// **'Téléphone'**
  String get phone;

  /// No description provided for @address.
  ///
  /// In fr, this message translates to:
  /// **'Adresse'**
  String get address;

  /// No description provided for @city.
  ///
  /// In fr, this message translates to:
  /// **'Ville'**
  String get city;

  /// No description provided for @postalCode.
  ///
  /// In fr, this message translates to:
  /// **'Code postal'**
  String get postalCode;

  /// No description provided for @country.
  ///
  /// In fr, this message translates to:
  /// **'Pays'**
  String get country;

  /// No description provided for @region.
  ///
  /// In fr, this message translates to:
  /// **'Région'**
  String get region;

  /// No description provided for @birthDate.
  ///
  /// In fr, this message translates to:
  /// **'Date de naissance'**
  String get birthDate;

  /// No description provided for @gender.
  ///
  /// In fr, this message translates to:
  /// **'Genre'**
  String get gender;

  /// No description provided for @profession.
  ///
  /// In fr, this message translates to:
  /// **'Profession'**
  String get profession;

  /// No description provided for @nationality.
  ///
  /// In fr, this message translates to:
  /// **'Nationalité'**
  String get nationality;

  /// No description provided for @status.
  ///
  /// In fr, this message translates to:
  /// **'Statut'**
  String get status;

  /// No description provided for @statusActive.
  ///
  /// In fr, this message translates to:
  /// **'Actif'**
  String get statusActive;

  /// No description provided for @statusInactive.
  ///
  /// In fr, this message translates to:
  /// **'Inactif'**
  String get statusInactive;

  /// No description provided for @statusSuspended.
  ///
  /// In fr, this message translates to:
  /// **'Suspendu'**
  String get statusSuspended;

  /// No description provided for @statusPending.
  ///
  /// In fr, this message translates to:
  /// **'En attente'**
  String get statusPending;

  /// No description provided for @statusConfirmed.
  ///
  /// In fr, this message translates to:
  /// **'Confirmé'**
  String get statusConfirmed;

  /// No description provided for @statusCancelled.
  ///
  /// In fr, this message translates to:
  /// **'Annulé'**
  String get statusCancelled;

  /// No description provided for @statusPostponed.
  ///
  /// In fr, this message translates to:
  /// **'Reporté'**
  String get statusPostponed;

  /// No description provided for @statusDraft.
  ///
  /// In fr, this message translates to:
  /// **'Brouillon'**
  String get statusDraft;

  /// No description provided for @role.
  ///
  /// In fr, this message translates to:
  /// **'Rôle'**
  String get role;

  /// No description provided for @roleSuperAdmin.
  ///
  /// In fr, this message translates to:
  /// **'Super Administrateur'**
  String get roleSuperAdmin;

  /// No description provided for @roleOrgAdmin.
  ///
  /// In fr, this message translates to:
  /// **'Administrateur Org'**
  String get roleOrgAdmin;

  /// No description provided for @roleModerator.
  ///
  /// In fr, this message translates to:
  /// **'Modérateur'**
  String get roleModerator;

  /// No description provided for @roleActiveMember.
  ///
  /// In fr, this message translates to:
  /// **'Membre Actif'**
  String get roleActiveMember;

  /// No description provided for @roleSimpleMember.
  ///
  /// In fr, this message translates to:
  /// **'Membre Simple'**
  String get roleSimpleMember;

  /// No description provided for @roleVisitor.
  ///
  /// In fr, this message translates to:
  /// **'Visiteur'**
  String get roleVisitor;

  /// No description provided for @type.
  ///
  /// In fr, this message translates to:
  /// **'Type'**
  String get type;

  /// No description provided for @typeOfficial.
  ///
  /// In fr, this message translates to:
  /// **'Officiel'**
  String get typeOfficial;

  /// No description provided for @typeSocial.
  ///
  /// In fr, this message translates to:
  /// **'Social'**
  String get typeSocial;

  /// No description provided for @typeTraining.
  ///
  /// In fr, this message translates to:
  /// **'Formation'**
  String get typeTraining;

  /// No description provided for @typeSolidarity.
  ///
  /// In fr, this message translates to:
  /// **'Solidarité'**
  String get typeSolidarity;

  /// No description provided for @typeOther.
  ///
  /// In fr, this message translates to:
  /// **'Autre'**
  String get typeOther;

  /// No description provided for @priority.
  ///
  /// In fr, this message translates to:
  /// **'Priorité'**
  String get priority;

  /// No description provided for @priorityLow.
  ///
  /// In fr, this message translates to:
  /// **'Basse'**
  String get priorityLow;

  /// No description provided for @priorityMedium.
  ///
  /// In fr, this message translates to:
  /// **'Moyenne'**
  String get priorityMedium;

  /// No description provided for @priorityHigh.
  ///
  /// In fr, this message translates to:
  /// **'Haute'**
  String get priorityHigh;

  /// No description provided for @date.
  ///
  /// In fr, this message translates to:
  /// **'Date'**
  String get date;

  /// No description provided for @startDate.
  ///
  /// In fr, this message translates to:
  /// **'Date de début'**
  String get startDate;

  /// No description provided for @endDate.
  ///
  /// In fr, this message translates to:
  /// **'Date de fin'**
  String get endDate;

  /// No description provided for @createdAt.
  ///
  /// In fr, this message translates to:
  /// **'Créé le'**
  String get createdAt;

  /// No description provided for @updatedAt.
  ///
  /// In fr, this message translates to:
  /// **'Modifié le'**
  String get updatedAt;

  /// No description provided for @lastActivity.
  ///
  /// In fr, this message translates to:
  /// **'Dernière activité'**
  String get lastActivity;

  /// No description provided for @description.
  ///
  /// In fr, this message translates to:
  /// **'Description'**
  String get description;

  /// No description provided for @details.
  ///
  /// In fr, this message translates to:
  /// **'Détails'**
  String get details;

  /// No description provided for @location.
  ///
  /// In fr, this message translates to:
  /// **'Lieu'**
  String get location;

  /// No description provided for @organizer.
  ///
  /// In fr, this message translates to:
  /// **'Organisateur'**
  String get organizer;

  /// No description provided for @participants.
  ///
  /// In fr, this message translates to:
  /// **'Participants'**
  String get participants;

  /// No description provided for @maxParticipants.
  ///
  /// In fr, this message translates to:
  /// **'Participants max'**
  String get maxParticipants;

  /// No description provided for @currentParticipants.
  ///
  /// In fr, this message translates to:
  /// **'Participants actuels'**
  String get currentParticipants;

  /// No description provided for @availableSpots.
  ///
  /// In fr, this message translates to:
  /// **'Places disponibles'**
  String get availableSpots;

  /// No description provided for @full.
  ///
  /// In fr, this message translates to:
  /// **'Complet'**
  String get full;

  /// No description provided for @cost.
  ///
  /// In fr, this message translates to:
  /// **'Coût'**
  String get cost;

  /// No description provided for @free.
  ///
  /// In fr, this message translates to:
  /// **'Gratuit'**
  String get free;

  /// No description provided for @price.
  ///
  /// In fr, this message translates to:
  /// **'Prix'**
  String get price;

  /// No description provided for @currency.
  ///
  /// In fr, this message translates to:
  /// **'Devise'**
  String get currency;

  /// No description provided for @membersManagement.
  ///
  /// In fr, this message translates to:
  /// **'Gestion des Membres'**
  String get membersManagement;

  /// No description provided for @membersTotal.
  ///
  /// In fr, this message translates to:
  /// **'{count} membres au total'**
  String membersTotal(int count);

  /// No description provided for @membersActive.
  ///
  /// In fr, this message translates to:
  /// **'Actifs'**
  String get membersActive;

  /// No description provided for @membersInactive.
  ///
  /// In fr, this message translates to:
  /// **'Inactifs'**
  String get membersInactive;

  /// No description provided for @membersPending.
  ///
  /// In fr, this message translates to:
  /// **'En attente'**
  String get membersPending;

  /// No description provided for @addMember.
  ///
  /// In fr, this message translates to:
  /// **'Ajouter un membre'**
  String get addMember;

  /// No description provided for @editMember.
  ///
  /// In fr, this message translates to:
  /// **'Modifier le membre'**
  String get editMember;

  /// No description provided for @deleteMember.
  ///
  /// In fr, this message translates to:
  /// **'Supprimer le membre'**
  String get deleteMember;

  /// No description provided for @memberDetails.
  ///
  /// In fr, this message translates to:
  /// **'Détails du membre'**
  String get memberDetails;

  /// No description provided for @searchMembers.
  ///
  /// In fr, this message translates to:
  /// **'Rechercher un membre...'**
  String get searchMembers;

  /// No description provided for @noMembersFound.
  ///
  /// In fr, this message translates to:
  /// **'Aucun membre trouvé'**
  String get noMembersFound;

  /// No description provided for @eventsManagement.
  ///
  /// In fr, this message translates to:
  /// **'Gestion des Événements'**
  String get eventsManagement;

  /// No description provided for @eventsTotal.
  ///
  /// In fr, this message translates to:
  /// **'{count} événements au total'**
  String eventsTotal(int count);

  /// No description provided for @eventsUpcoming.
  ///
  /// In fr, this message translates to:
  /// **'À venir'**
  String get eventsUpcoming;

  /// No description provided for @eventsOngoing.
  ///
  /// In fr, this message translates to:
  /// **'En cours'**
  String get eventsOngoing;

  /// No description provided for @eventsPast.
  ///
  /// In fr, this message translates to:
  /// **'Passés'**
  String get eventsPast;

  /// No description provided for @addEvent.
  ///
  /// In fr, this message translates to:
  /// **'Ajouter un événement'**
  String get addEvent;

  /// No description provided for @editEvent.
  ///
  /// In fr, this message translates to:
  /// **'Modifier l\'événement'**
  String get editEvent;

  /// No description provided for @deleteEvent.
  ///
  /// In fr, this message translates to:
  /// **'Supprimer l\'événement'**
  String get deleteEvent;

  /// No description provided for @eventDetails.
  ///
  /// In fr, this message translates to:
  /// **'Détails de l\'événement'**
  String get eventDetails;

  /// No description provided for @searchEvents.
  ///
  /// In fr, this message translates to:
  /// **'Rechercher un événement...'**
  String get searchEvents;

  /// No description provided for @noEventsFound.
  ///
  /// In fr, this message translates to:
  /// **'Aucun événement trouvé'**
  String get noEventsFound;

  /// No description provided for @calendar.
  ///
  /// In fr, this message translates to:
  /// **'Calendrier'**
  String get calendar;

  /// No description provided for @register.
  ///
  /// In fr, this message translates to:
  /// **'S\'inscrire'**
  String get register;

  /// No description provided for @unregister.
  ///
  /// In fr, this message translates to:
  /// **'Se désinscrire'**
  String get unregister;

  /// No description provided for @organisationsManagement.
  ///
  /// In fr, this message translates to:
  /// **'Gestion des Organisations'**
  String get organisationsManagement;

  /// No description provided for @organisationsTotal.
  ///
  /// In fr, this message translates to:
  /// **'{count} organisations au total'**
  String organisationsTotal(int count);

  /// No description provided for @addOrganisation.
  ///
  /// In fr, this message translates to:
  /// **'Ajouter une organisation'**
  String get addOrganisation;

  /// No description provided for @editOrganisation.
  ///
  /// In fr, this message translates to:
  /// **'Modifier l\'organisation'**
  String get editOrganisation;

  /// No description provided for @deleteOrganisation.
  ///
  /// In fr, this message translates to:
  /// **'Supprimer l\'organisation'**
  String get deleteOrganisation;

  /// No description provided for @organisationDetails.
  ///
  /// In fr, this message translates to:
  /// **'Détails de l\'organisation'**
  String get organisationDetails;

  /// No description provided for @searchOrganisations.
  ///
  /// In fr, this message translates to:
  /// **'Rechercher une organisation...'**
  String get searchOrganisations;

  /// No description provided for @noOrganisationsFound.
  ///
  /// In fr, this message translates to:
  /// **'Aucune organisation trouvée'**
  String get noOrganisationsFound;

  /// No description provided for @cotisationsManagement.
  ///
  /// In fr, this message translates to:
  /// **'Gestion des Cotisations'**
  String get cotisationsManagement;

  /// No description provided for @cotisationsTotal.
  ///
  /// In fr, this message translates to:
  /// **'{count} cotisations au total'**
  String cotisationsTotal(int count);

  /// No description provided for @cotisationPaid.
  ///
  /// In fr, this message translates to:
  /// **'Payée'**
  String get cotisationPaid;

  /// No description provided for @cotisationUnpaid.
  ///
  /// In fr, this message translates to:
  /// **'Non payée'**
  String get cotisationUnpaid;

  /// No description provided for @cotisationOverdue.
  ///
  /// In fr, this message translates to:
  /// **'En retard'**
  String get cotisationOverdue;

  /// No description provided for @addCotisation.
  ///
  /// In fr, this message translates to:
  /// **'Ajouter une cotisation'**
  String get addCotisation;

  /// No description provided for @editCotisation.
  ///
  /// In fr, this message translates to:
  /// **'Modifier la cotisation'**
  String get editCotisation;

  /// No description provided for @deleteCotisation.
  ///
  /// In fr, this message translates to:
  /// **'Supprimer la cotisation'**
  String get deleteCotisation;

  /// No description provided for @cotisationDetails.
  ///
  /// In fr, this message translates to:
  /// **'Détails de la cotisation'**
  String get cotisationDetails;

  /// No description provided for @searchCotisations.
  ///
  /// In fr, this message translates to:
  /// **'Rechercher une cotisation...'**
  String get searchCotisations;

  /// No description provided for @noCotisationsFound.
  ///
  /// In fr, this message translates to:
  /// **'Aucune cotisation trouvée'**
  String get noCotisationsFound;

  /// No description provided for @amount.
  ///
  /// In fr, this message translates to:
  /// **'Montant'**
  String get amount;

  /// No description provided for @dueDate.
  ///
  /// In fr, this message translates to:
  /// **'Date d\'échéance'**
  String get dueDate;

  /// No description provided for @paymentDate.
  ///
  /// In fr, this message translates to:
  /// **'Date de paiement'**
  String get paymentDate;

  /// No description provided for @paymentMethod.
  ///
  /// In fr, this message translates to:
  /// **'Méthode de paiement'**
  String get paymentMethod;

  /// No description provided for @statistics.
  ///
  /// In fr, this message translates to:
  /// **'Statistiques'**
  String get statistics;

  /// No description provided for @analytics.
  ///
  /// In fr, this message translates to:
  /// **'Analytics'**
  String get analytics;

  /// No description provided for @total.
  ///
  /// In fr, this message translates to:
  /// **'Total'**
  String get total;

  /// No description provided for @average.
  ///
  /// In fr, this message translates to:
  /// **'Moyenne'**
  String get average;

  /// No description provided for @percentage.
  ///
  /// In fr, this message translates to:
  /// **'Pourcentage'**
  String get percentage;

  /// No description provided for @viewList.
  ///
  /// In fr, this message translates to:
  /// **'Vue liste'**
  String get viewList;

  /// No description provided for @viewGrid.
  ///
  /// In fr, this message translates to:
  /// **'Vue grille'**
  String get viewGrid;

  /// No description provided for @viewCalendar.
  ///
  /// In fr, this message translates to:
  /// **'Vue calendrier'**
  String get viewCalendar;

  /// No description provided for @page.
  ///
  /// In fr, this message translates to:
  /// **'Page'**
  String get page;

  /// No description provided for @pageOf.
  ///
  /// In fr, this message translates to:
  /// **'Page {current} sur {total}'**
  String pageOf(int current, int total);

  /// No description provided for @language.
  ///
  /// In fr, this message translates to:
  /// **'Langue'**
  String get language;

  /// No description provided for @languageFrench.
  ///
  /// In fr, this message translates to:
  /// **'Français'**
  String get languageFrench;

  /// No description provided for @languageEnglish.
  ///
  /// In fr, this message translates to:
  /// **'English'**
  String get languageEnglish;

  /// No description provided for @theme.
  ///
  /// In fr, this message translates to:
  /// **'Thème'**
  String get theme;

  /// No description provided for @themeLight.
  ///
  /// In fr, this message translates to:
  /// **'Clair'**
  String get themeLight;

  /// No description provided for @themeDark.
  ///
  /// In fr, this message translates to:
  /// **'Sombre'**
  String get themeDark;

  /// No description provided for @themeSystem.
  ///
  /// In fr, this message translates to:
  /// **'Système'**
  String get themeSystem;

  /// No description provided for @version.
  ///
  /// In fr, this message translates to:
  /// **'Version'**
  String get version;

  /// No description provided for @about.
  ///
  /// In fr, this message translates to:
  /// **'À propos'**
  String get about;

  /// No description provided for @help.
  ///
  /// In fr, this message translates to:
  /// **'Aide'**
  String get help;

  /// No description provided for @support.
  ///
  /// In fr, this message translates to:
  /// **'Support'**
  String get support;

  /// No description provided for @termsOfService.
  ///
  /// In fr, this message translates to:
  /// **'Conditions d\'utilisation'**
  String get termsOfService;

  /// No description provided for @privacyPolicy.
  ///
  /// In fr, this message translates to:
  /// **'Politique de confidentialité'**
  String get privacyPolicy;

  /// No description provided for @confirmDelete.
  ///
  /// In fr, this message translates to:
  /// **'Êtes-vous sûr de vouloir supprimer ?'**
  String get confirmDelete;

  /// No description provided for @confirmLogout.
  ///
  /// In fr, this message translates to:
  /// **'Êtes-vous sûr de vouloir vous déconnecter ?'**
  String get confirmLogout;

  /// No description provided for @confirmCancel.
  ///
  /// In fr, this message translates to:
  /// **'Êtes-vous sûr de vouloir annuler ?'**
  String get confirmCancel;

  /// No description provided for @requiredField.
  ///
  /// In fr, this message translates to:
  /// **'Ce champ est requis'**
  String get requiredField;

  /// No description provided for @invalidEmail.
  ///
  /// In fr, this message translates to:
  /// **'Email invalide'**
  String get invalidEmail;

  /// No description provided for @invalidPhone.
  ///
  /// In fr, this message translates to:
  /// **'Numéro de téléphone invalide'**
  String get invalidPhone;

  /// No description provided for @invalidDate.
  ///
  /// In fr, this message translates to:
  /// **'Date invalide'**
  String get invalidDate;

  /// No description provided for @passwordTooShort.
  ///
  /// In fr, this message translates to:
  /// **'Le mot de passe est trop court'**
  String get passwordTooShort;

  /// No description provided for @passwordsDoNotMatch.
  ///
  /// In fr, this message translates to:
  /// **'Les mots de passe ne correspondent pas'**
  String get passwordsDoNotMatch;
}

class _AppLocalizationsDelegate
    extends LocalizationsDelegate<AppLocalizations> {
  const _AppLocalizationsDelegate();

  @override
  Future<AppLocalizations> load(Locale locale) {
    return SynchronousFuture<AppLocalizations>(lookupAppLocalizations(locale));
  }

  @override
  bool isSupported(Locale locale) =>
      <String>['en', 'fr'].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 'fr':
      return AppLocalizationsFr();
  }

  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.',
  );
}
